मैं क्लाइंट-साइड (जावास्क्रिप्ट) पर एक XML दस्तावेज में दुकान उपयोगकर्ता के इनपुट करने के लिए कोशिश कर रहा हूँ से पहले एक्सएमएल से अमान्य वर्ण निकाल रहा है, और दृढ़ता के लिए सर्वर से संचारित कि।() XmlSerializer के साथ यह serializing
एक उपयोगकर्ता, उदाहरण के लिए, उस पाठ को एक एसटीएक्स चरित्र (0x2) शामिल में चिपकाया। XMLSerializer एसटीएक्स चरित्र से बच नहीं पाया, और इसलिए, अच्छी तरह से गठित एक्सएमएल को क्रमबद्ध नहीं किया गया था। या शायद .attr() कॉल एसटीएक्स चरित्र से बच जाना चाहिए था, लेकिन किसी भी मामले में, अवैध एक्सएमएल का उत्पादन किया गया था।
मैं, की इन-ब्राउज़र XmlSerializer() हमेशा ठीक से नहीं बनाया गया है उत्पादन की खोज कर रहा हूँ (और यहां तक कि ब्राउज़र के अपने DOMParser()
यह उदाहरण संतुष्ट नहीं करता पता चलता है कि एसटीएक्स चरित्र है ठीक से XmlSerializer() द्वारा इनकोडिंग नहीं:
> doc = $.parseXML('<?xml version="1.0" encoding="utf-8" ?>\n<elem></elem>');
#document
> $(doc).find("elem").attr("someattr", String.fromCharCode(0x2));
[ <elem someattr=""></elem> ]
> serializedDoc = new XMLSerializer().serializeToString(doc);
"<?xml version="1.0" encoding="utf-8"?><elem someattr=""/></elem>"
> $.parseXML(serializedDoc);
Error: Invalid XML: <?xml version="1.0" encoding="utf-8"?><elem someattr=""/></elem>
मैं कैसे इन-ब्राउज़र (मनमाने ढंग से उपयोगकर्ता के इनपुट द्वारा निर्धारित पैरामीटर वाला) एक XML दस्तावेज निर्माण करना चाहिए ऐसी है कि वह हमेशा अच्छी तरह से गठित किया जाएगा (सब कुछ सही तरीके से छोड़े)? मैं IE8 या IE7 समर्थन करने के लिए की जरूरत नहीं है।
(और हाँ, मैं सर्वर पर एक्सएमएल को मान्य करते हैं, लेकिन ब्राउज़र सर्वर एक दस्तावेज है कि ठीक से नहीं बनाया हाथ है, सबसे अच्छा सर्वर कर सकते हैं जो कि गरीब के लिए उपयोगी नहीं है इसे अस्वीकार है, उपयोगकर्ता)
मुझे यकीन नहीं है कि स्रोत स्ट्रिंग चरित्र-दर-चरित्र के माध्यम से जाने से कहीं अधिक आसान है, जो आवश्यकतानुसार इकाइयों का अनुवाद करता है। – Pointy
मैं ऐसा करने के लिए खुद पर भरोसा नहीं करता हूं (मुझे अन्य संभावित मुद्दों की तलाश करने के लिए एक्सएमएल को पर्याप्त रूप से भी पता नहीं है) ... मेरे लिए ऐसा करने के लिए एक सामान्य/मानक जेएस लाइब्रेरी है ISFfeFORXML (inString)? – Seth
इसके अलावा, क्या आप दुर्घटना से संभवतः डबल-एंटाइटलाइजिंग समाप्त नहीं करेंगे? उदाहरण के लिए, यदि भविष्य में ब्राउज़र XMLSerializer() + attr() में प्राधिकारिकता समाप्त हो जाती है, तो आप डबल-एस्केपिंग समाप्त कर देंगे? – Seth