PHP SoapClient为相同的元素创建XML引用,使其无法接受服务

Mat*_*att 6 php xml soap

我正在使用PHP中的SOAP客户端,并且调用正在进行到服务正常,但调用之外的元素彼此相同.似乎在发生这种情况时,而不是创建两个独立但相同的元素,如下所示:

<ns1:someelement>
  <ns1:name>name1</ns1:name>
  <ns1:value>value1</ns1:value>
</ns1:someelement>
<ns1:someelement>
  <ns1:name>name1</ns1:name>
  <ns1:value>value1</ns1:value>
</ns1:someelement>
Run Code Online (Sandbox Code Playgroud)

它坚持只生成元素的一个副本并为其分配一个ID,并使用href用于该元素的任何后续实例(如下所示),我正在使用的Web服务不支持(我不知道为什么这样做)是的,但它并不重要,因为我无法改变它)

<ns1:someelement id="#ref1">
  <ns1:name>name1</ns1:name>
  <ns1:value>value1</ns1:value>
</ns1:someelement>
<ns1:someelement href="#ref1" />
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何强制XML使用完整包含的重复元素,而不是使用hrefs/ids.我检查了PHP SoapClient的文档以获取选项或类似的东西,但找不到任何东西.任何帮助或建议将不胜感激.谢谢.

poz*_*ozs 0

  • 确保不使用参考文献
  • 尝试手动添加参数SoapParam
  • 尝试手动添加参数SoapVar

$soapClient->__soapCall('Method', array(
    new SoapParam($someelement1, 'someelement'),
    // or
    new SoapVar('<ns1:someelement><ns1:name>name1</ns1:name><ns1:value>value1</ns1:value></ns1:someelement>', XSD_ANYXML)
));
Run Code Online (Sandbox Code Playgroud)