我必须使用 SoapClient 对象调用 SOAP Web 服务。其中一个参数必须包含 CDATA 部分中包含的一些 XML,如下所示:
<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>
注意节点命名空间,它是我痛苦的根源......
如果我创建一个字符串SoapVar
,则对 XML 进行编码...
new SoapVar('<![CDATA[<foo><bar>baz</bar></foo>]]>', XSD_STRING, null, null, 'productInformation', self::MY_NAMESPACE)
<ns2:productInformation xsi:type="xsd:string"><![CDATA[<foo&t;<bar>baz</bar></foo>]]></ns2:productInformation>
所以我不能这样做。我发现的唯一选择是使用XSD_ANYXML
编码,如下所示:
new SoapVar('<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>', XSD_ANYXML)
它可以工作,但很糟糕......查看硬编码的命名空间快捷方式(“ns2”)。
那么您是否有创建包含 XML 的 CDATA 部分的想法?