我正在使用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"的建议,我修改了$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中的任何地方。
可以为ID元素添加xsi:nil="true"
属性吗?就像
$myarray["ID"] = array(
'_' => '',
'xsi:nil' => "true");
来源:http://radu.cotescu.com/how-to-send-null-values-in-soapui-requests/