首页 文章

有没有办法在wsdl中元素类型为int时使用PHP SOAP Client传递null?

提问于
浏览
0

我正在使用PHP SOAP Client提交一个对象,该对象包含在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;

Question: 有没有办法使用PHP SOAP客户端为int元素提交null值?

Update 正如'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中的任何位置 .

1 回答

相关问题