2012-06-13 65 views
10

我必須使用SoapClient對象調用SOAP Web服務。其中一個參數必須包含包含在CDATA節中的某些XML,像這樣:如何使用XML創建包含CDATA的SoapVar?

<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部分?

回答

1

我有相同的要求(maldesigned供應商的網絡服務,需要嵌入的一部分請求作爲XML編碼在一個字符串,並且如果你給它一個實體編碼的字符串而不是CDATA爆炸)。

盡我所能確定,您的SoapVar解決方法非常好。抱歉。我非常不滿意自己必須硬編碼一個名稱空間引用。

相關問題