我正在使用 PHP SOAP 客户端提交一个对象,该对象包含 wsdl 中定义的 ID 元素,如下所示:
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
我正在向 PHP SOAP 客户端传递一个包含 ID 值的数组,如下所示:
ID' => string '' (length=0)
这导致来自 SOAP 客户端的 xml 如下所示:
<ns1:ID>0</ns1:ID>
我希望这是:
<ns1:ID></ns1:ID>
我已经尝试像这样将 ID 的数组值设置为 null,但它仍然会生成值为 0 的 xml。
$myarray["ID"] = null;
问题: 有没有办法使用 PHP SOAP 客户端为 int 元素提交空值?
更新 正如 'Nate from Kalamazoo' 所建议的,我更改了 $myarray["ID"] = null; 至:
$myarray["ID"] = array('_' => '','xsi:nil' => "true");
这导致了一个数组元素“ID”,它是另一个数组,如下所示:
'ID' =>
array (size=2)
'_' => ''
'xsi:nil' => string 'true'
现在xml看起来像:
<ns1:ID>1</ns1:ID> //where did the 1 come from?
为了清楚起见,这里是我使用 PHP SOAP 客户端的方式:
$client->SomeFunction(array('application' => $myarray));
传递给 SOAP 客户端的数组与用作 XML 元素名称的元素名称相关联,因此我猜测正在传递的数组的 ID 元素中的数组以某种方式返回 1。但无论哪种方式 'xsi:ni ;' 不会出现在 XML 中的任何位置。