Muszę zadzwonić do usługi sieciowej SOAP, używając obiektu SoapClient. Jednym z parametrów musi zawierać niektóre XML zawarte w sekcji CDATA coś takiego:Jak mogę utworzyć SoapVar zawierający CDATA z XML?
<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>
Uwaga przestrzeni nazw węzłów, jest źródłem mojego bólu ...
Jeśli utworzyć ciąg SoapVar
, kod XML jest kodowany ...
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>
Więc nie mogę tego zrobić. Jedyną alternatywą znalazłem jest użycie kodującego XSD_ANYXML
, tak:
new SoapVar('<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>', XSD_ANYXML)
To działa, ale to jest złe ... Spójrz na zakodowanego skrótu przestrzeni nazw („ns2”).
Masz pomysł na stworzenie sekcji CDATA zawierającej XML?