У меня тоже была такая же проблема, и вот как я ее решил, может быть, это может помочь и другим.
'xsi: nil = true' устанавливается, если значение объекта данных мыла равно undefустановите значение arrayref для решения проблемы.
См. код ниже для справки:
Формат мыла:
< m:clHotelIdInfo>< m:HotelIdInfo xsi:nil=true id="1219615" />< /m:clHotelIdInfo>
Структура объекта мыла
*bless( {
'_name' => 'clHotelIdInfo',
'_signature' => [],
'_value' => [
\bless( {
'_signature' => [],
'_value' => [
bless( {
'_name' => 'HotelIdInfo',
'_signature' => [],
**'_value' => [
undef
],**
'_prefix' => 'm',
'_attr' => {
'id' => '1219615'
}
}, 'SOAP::Data' )
],
'_attr' => {}
}, 'SOAP::Data' )
],
'_prefix' => 'm',
'_attr' => {}
}, 'SOAP::Data' )*
Ожидаемый формат Soap:
< m:clHotelIdInfo>< m:HotelIdInfo id="1219615" /></ m:clHotelIdInfo>
Структура объекта Soap должна быть:
*bless( {
'_name' => 'clHotelIdInfo',
'_signature' => [],
'_value' => [
\bless( {
'_signature' => [],
'_value' => [
bless( {
'_name' => 'HotelIdInfo',
'_signature' => [],
**'_value' => [],**
'_prefix' => 'm',
'_attr' => {
'id' => '1219615'
}
}, 'SOAP::Data' )
],
'_attr' => {}
}, 'SOAP::Data' )
],
'_prefix' => 'm',
'_attr' => {}
}, 'SOAP::Data' )*
Если вы внимательно наблюдаете за объектами, значение HotelIdInfo было ранее неопределенным, которое при изменении наarrayref, помог мне избавиться от 'xsi: nil = true'.
Мне не пришлось менять ни один из существующих модулей cpan.Просто установите значение arrayref вместо undef.Это решение на языке Perl.