यदि आपके पास XML प्रारूप पर नियंत्रण है, तो आपको समस्या को अंदर से बदलना चाहिए। बाइनरी एक्सएमएल को जोड़ने के बजाय आपको एक ऐसे दस्तावेज़ को संलग्न करने के बारे में सोचना चाहिए जिसमें एकाधिक भाग हैं, जिनमें से एक एक्सएमएल है।
इसका पारंपरिक समाधान एक संग्रह (उदा। टैर) है। लेकिन यदि आप अपने संलग्न दस्तावेज़ को टेक्स्ट-आधारित प्रारूप में रखना चाहते हैं या यदि आपके पास फ़ाइल संग्रह लाइब्रेरी तक पहुंच नहीं है, तो एक मानक योजना भी है जिसका उपयोग ईमेल और HTTP में भारी रूप से किया जाता है जो multipart/* MIMEContent-Transfer-Encoding: binary के साथ होता है।
उदाहरण के लिए यदि आपके सर्वर HTTP के माध्यम से संवाद और आप एक बहुखण्डीय दस्तावेज़ भेजना चाहते हैं, प्राथमिक एक XML दस्तावेज है जो एक बाइनरी डेटा के लिए संदर्भित करता जा रहा है, HTTP संचार कुछ इस प्रकार दिखाई देंगे:
POST/HTTP/1.1
Content-Type: multipart/related; boundary="qd43hdi34udh34id344"
... other headers elided ...
--qd43hdi34udh34id344
Content-Type: application/xml
<myxml>
<data href="cid:data.bin"/>
</myxml>
--qd43hdi34udh34id344
Content-Id: <data.bin>
Content-type: application/octet-stream
Content-Transfer-Encoding: binary
... binary data ...
--qd43hdi34udh34id344--
जैसा कि उपरोक्त उदाहरण में, एक्सएमएल cid
यूआरआई योजना का उपयोग करके संलग्न मल्टीपार्ट में बाइनरी डेटा का संदर्भ देता है जो सामग्री-आईडी शीर्षलेख के लिए पहचानकर्ता है। इस योजना का ओवरहेड सिर्फ एमआईएमई हेडर होगा। HTTP प्रतिक्रिया के लिए भी इसी तरह की योजना का उपयोग किया जा सकता है। बेशक HTTP प्रोटोकॉल में, आपके पास एक मल्टीपार्ट दस्तावेज़ को अलग अनुरोध/प्रतिक्रिया में भेजने का विकल्प भी है।
आप एक बहुखण्डीय में अपने डेटा को लपेटकर से बचना चाहते हैं डेटा URI का उपयोग करने के लिए है:
<myxml>
<data href="data:application/something;charset=utf-8;base64,dGVzdGRhdGE="/>
</myxml>
लेकिन इस बेस 64 भूमि के ऊपर है।
स्रोत
2014-12-10 08:42:35
प्रतिभा! मुझे इसकी ही खोज थी! –