我也有同樣的問題,這就是我如何解決它,也許它也可以幫助別人。
如果soap數據對象的值爲undef,則設置'xsi:nil = true',將其設置爲arrayref以解決問題。
請參見下面的代碼以供參考:
皁格式:
< m:clHotelIdInfo>< m:HotelIdInfo xsi:nil=true id="1219615" />< /m:clHotelIdInfo>
SOAP對象結構
*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')*
預計皁格式:
< m:clHotelIdInfo>< m:HotelIdInfo id="1219615" /></ m:clHotelIdInfo>
所以肥皂的OBJ ECT結構必須是:
*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精心價值是民主基金較早,其變更爲數組引用的時候,幫我擺脫「XSI:無=真」。
我不必更改cpan的任何現有模塊。只需設置值arrayref而不是undef。這是perl語言的解決方案。
聽起來比我現在的解決方法差10倍。我寧願發一個''到處理器。 – xenoterracide
對我來說,聽起來好幾百倍,因爲您不必依靠黑客和特定於實現的「解決方法」。 –
你不知道我已經有多少解決方法......接收端沒有使用理智解析......這增加了一層複雜性,並要求我重寫。 – xenoterracide