2012-06-13 8 views
10

मुझे सोप क्लाइंट ऑब्जेक्ट का उपयोग करके एक एसओएपी वेब सेवा कॉल करना है। अगर मैं एक स्ट्रिंग SoapVar बनाने के लिए,मैं एक्सएमएल के साथ सीडीएटीए युक्त सोपवर कैसे बना सकता हूं?

<ns2:productInformation><![CDATA[<foo><bar>baz</bar></foo>]]></ns2:productInformation> 

नोट नोड नाम स्थान यह मेरे दर्द का स्रोत है ...

,: मानकों में से एक कुछ एक्सएमएल एक CDATA खंड में शामिल है, इस तरह शामिल करने के लिए है एक्सएमएल एन्कोड किया गया है ...

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 युक्त सीडीएटीए अनुभाग बनाने का विचार है?

उत्तर

1

मेरे पास एक ही आवश्यकता है (दुर्भावनापूर्ण विक्रेता वेब सेवा जिसके लिए अनुरोध के हिस्से को एम्बेड करने की आवश्यकता होती है क्योंकि एक स्ट्रिंग में एन्कोड किया गया एक्सएमएल होता है, और यदि आप इसे सीडीएटीए की बजाय इकाई-एन्कोडेड स्ट्रिंग देते हैं तो उड़ाता है)।

निर्धारित करने की मेरी सबसे अच्छी क्षमता के लिए, आपके SoapVar वर्कअराउंड जितना अच्छा हो उतना अच्छा है। माफ़ कीजिये। मैं नामस्थान संदर्भ को हार्डकोड करने के बारे में बहुत नाखुश हूं।

संबंधित मुद्दे