0

我正在使用 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 中的任何位置。

4

1 回答 1

0

您可以将xsi:nil="true"属性添加到 ID 元素吗?就像是

$myarray["ID"] = array(
            '_' => '',
            'xsi:nil' => "true");

资料来源:http ://radu.cotescu.com/how-to-send-null-values-in-soapui-requests/

于 2013-06-13T19:19:53.520 回答