Tôi phải gọi một dịch vụ web SOAP bằng cách sử dụng một đối tượng SoapClient. Một trong những thông số có chứa một số XML bao gồm trong một phần CDATA, như thế này:Tôi có thể tạo SoapVar chứa CDATA bằng XML bằng cách nào?
<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>
Lưu ý không gian tên nút, đó là nguồn gốc của nỗi đau của tôi ...
Nếu tôi tạo ra một chuỗi SoapVar
, XML được mã hóa ...
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>
Vì vậy, tôi không thể làm theo cách này. Lựa chọn duy nhất tôi đã tìm thấy là sử dụng mã hóa XSD_ANYXML
, như thế này:
new SoapVar('<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation>', XSD_ANYXML)
Nó hoạt động, nhưng nó xấu ... Nhìn vào shortcut cứng mã hoá không gian tên ("ns2").
Vì vậy, bạn có ý tưởng tạo một phần CDATA chứa XML không?