Devo chiamare un servizio Web SOAP utilizzando un oggetto SoapClient. Uno dei parametri deve contenere alcune XML inclusi in una sezione CDATA, in questo modo:Come posso creare un SoapVar contenente CDATA con XML?
<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>
Nota lo spazio dei nomi del nodo, è la fonte del mio dolore ...
Se creo una stringa SoapVar
, l'XML è codificato ...
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>
Quindi non posso farlo in questo modo. L'unica alternativa che ho trovato è quello di utilizzare la codifica XSD_ANYXML
, in questo modo:
new SoapVar('<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>', XSD_ANYXML)
Funziona, ma è male ... Guarda la scorciatoia hard coded namespace ("ns2").
Quindi avete un'idea per creare una sezione CDATA contenente XML?