Как создать SoapVar, содержащую CDATA с XML?

Мне нужно вызвать веб-службу SOAP с помощью объекта SoapClient. Один из параметров должен содержать некоторый XML, включенный в раздел CDATA, например:

<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").

У вас есть идея создать раздел CDATA, содержащий XML?

10
задан hakre 2 January 2013 в 16:39
поделиться