gpt4 book ai didi

php - 如何使用 XML 创建包含 CDATA 的 SoapVar?

转载 作者:可可西里 更新时间:2023-10-31 22:52:01 25 4
gpt4 key购买 nike

我必须使用 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">&lt;![CDATA[&lt;foo&t;&lt;bar&gt;baz&lt;/bar&gt;&lt;/foo&gt;]]&gt;</ns2:productInformation>

所以我不能这样做。我发现的唯一替代方法是使用 XSD_ANYXML 编码,如下所示:

new SoapVar('<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>', XSD_ANYXML)

它有效,但它很糟糕......看看硬编码的命名空间快捷方式(“ns2”)。

那么您是否有创建包含 XML 的 CDATA 部分的想法?

最佳答案

我有同样的要求(设计不当的供应商 Web 服务需要将部分请求作为 XML 编码嵌入到字符串中,如果你给它一个实体编码的字符串而不是 CDATA,它就会崩溃)。

尽我所能确定,您的 SoapVar 变通办法已经很好了。对不起。我对必须自己对 namespace 引用进行硬编码感到非常不高兴。

关于php - 如何使用 XML 创建包含 CDATA 的 SoapVar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11015959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com