मैं XML दस्तावेज़ को पार्स करने के लिए जावा के DocumentBuilder.parse(InputStream)
का उपयोग कर रहा हूं। कभी-कभी, मुझे विकृत XML दस्तावेज़ मिलते हैं जिसमें अंतिम >
के बाद अतिरिक्त जंक होता है जो SAXException: Content is not allowed in trailing section
का कारण बनता है। (मैंने देखा है कि मामलों में, जंक बस एक या अधिक शून्य बाइट्स है।)अनदेखा करना "पिछला भाग में सामग्री की अनुमति नहीं है" SAXException
मुझे परवाह नहीं है कि अंतिम >
के बाद क्या है। क्या जावा में एक संपूर्ण एक्सएमएल दस्तावेज़ को पार्स करने का कोई आसान तरीका है और क्या यह किसी भी पीछे की जंक को अनदेखा कर रहा है?
ध्यान दें कि "अनदेखा" द्वारा मुझे अपवाद को पकड़ने और अनदेखा करने का मतलब नहीं है: मेरा मतलब है पिछला जंक अनदेखा करना, कोई अपवाद नहीं डालना, और Document
ऑब्जेक्ट को वापस करने के लिए एक्सएमएल के बाद से अंतिम >
मान्य है।
मेरे पास प्रेषक पर कोई नियंत्रण नहीं है। और आपका "उत्तर" उस भावना में नहीं है जो आप स्वीकार करते हैं और जो आप उत्सर्जित करते हैं उसमें सख्त बनें। " –
आपने पूछा "क्या जावा में एक संपूर्ण एक्सएमएल दस्तावेज़ को पार्स करने का कोई आसान तरीका है और क्या यह किसी भी पीछे की जंक को नजरअंदाज कर देता है?" जवाब "नहीं, वहां नहीं है", और मैंने कारण दिया। हो सकता है कि आप http://home.ccil.org/~cowan/XML/tagsoup/ ढूंढ रहे हों? शायद आप जानते हैं कि आपके एक्सएमएल में सीडीएटीए नहीं है और आप एक आदिम इनपुटस्ट्रीम रैपर को कार्यान्वित कर सकते हैं? मुझे यकीन नहीं है कि आप किस उत्तर की तलाश में हैं। –
प्रत्येक एक्सएमएल पार्सर प्रत्येक तत्व का ट्रैक रखता है और जानता है कि तत्व कहां बंद कर दिया गया है> इसके बंद टैग के पार्सिंग द्वारा "बंद" किया गया है। इसका मतलब है कि प्रत्येक एक्सएमएल पार्सर फाइनल को भी जानता है> जब इसे देखता है क्योंकि पहला तत्व इसके समापन टैग द्वारा संतुलित किया गया है। उस बिंदु पर, मैं पार्सर को बस रुकना चाहता हूं। आप इसे इससे अधिक जटिल बना रहे हैं। –