2009-06-15 20 views
6

मैं एक XML दस्तावेज़ दस्तावेज़ में (संभवतः) विकृत HTML का एक टुकड़ा लोड करने की कोशिश कर रहा हूं, लेकिन यह XMLExceptions के साथ विफल रहता है ... क्योंकि अतिरिक्त खोलने/समापन टैग हैं, और इसके बदले XML टैग जैसे <img ><img />पार्स malformed XML

मैं डेटा में सभी त्रुटियों के साथ XML को कैसे पार्स कर सकता हूं? क्या कोई XML सत्यापनकर्ता है जिसे मैं इन त्रुटियों को ठीक करने के लिए पार्सिंग से पहले आवेदन कर सकता हूं? या अपवाद पार्स को संभालेगा जो भी पार्स किया जा सकता है?

+0

मैं अपवादों को संभालने और कोशिश कर रहा हूं कि क्या आपको विकृतियों का कोई विचार है ... – abmv

+0

यदि यह विकृत है, तो यह एक टैंट्रम (एक्सएमएलएक्सप्शन) फेंकता है और इसे बिल्कुल भी पार्स नहीं करता है! कोई बच्चा नहीं है। –

+0

http://stackoverflow.com/questions/28909882/dealing-with-malformed-xml – Sobrique

उत्तर

14

HTML Agility Pack पार्स जाएगा डिज़ाइन नहीं किया गया एक्सएचटीएमएल की बजाय एचटीएमएल, और काफी क्षमा कर रहा है। यदि आपने XmlDocument का उपयोग किया है तो ऑब्जेक्ट मॉडल परिचित होगा।

+1

यह एक्सएमएल पर वास्तव में अच्छा काम करता है जिसमें लापता अंत टैग वाले नोड्स का पेड़ होता है। सलाह के लिये धन्यवाद! –

0

जो आप करने की कोशिश कर रहे हैं वह बहुत मुश्किल है। एक्सएमएल को सख्त और एचटीएमएल नहीं होने के कारण एचटीएमएल को एक्सएमएल पार्सर का उपयोग करके पार्स नहीं किया जा सकता है। यदि वह HTML अनुपालन एक्सएचटीएमएल (एक्सएमएल के रूप में एचटीएमएल) था, तो एक एक्सएमएल पार्सर बिना किसी समस्या के HTML को पार्स करेगा।

यदि आप वास्तव में HTML के लिए XML पार्सर का उपयोग करना चाहते हैं, तो आप यह देखना चाहते हैं कि एक्सएचटीएमएल कन्वर्टर्स के लिए कोई HTML है या नहीं।

दूसरे शब्दों में, मैं अभी तक एक XML पार्सर कि विकृत एक्सएमएल संभालती पूरा करने के लिए है ... वे HTML की तरह ढीला मार्कअप (अच्छे कारण के लिए, भी :)) स्वीकार करने के लिए

2

आप this question का उत्तर देखना चाहते हैं।

मूल रूप से सुंदरसप के .NET पोर्ट और एचटीएमएल चपलता पैक के बीच कहीं भी एक तरीका है।

1

यह संभावना नहीं है कि आप एक एक्सएमएल डॉक्यूमेंट बनाने में सक्षम होंगे जिसमें इस स्तर की विकृत संरचना है। XmlDocument (मेरे ज्ञान के लिए) के लिए आवश्यक है कि एक्सएमएल सामग्री उचित घोंसले और बंद सिंटैक्स का पालन करे।

हालांकि, आपको संदेह है कि आप इसके बजाय XmlReader के साथ इसे पार्स कर सकते हैं। अगर कुछ गंभीर त्रुटियों का सामना करना पड़ता है तो यह अपवाद भी फेंक सकता है, लेकिन एमएसडीएन दस्तावेज़ों के मुताबिक, यह कम से कम त्रुटियों के स्थान का खुलासा कर सकता है।

यदि आप सिर्फ एचटीएमएल से काम कर रहे हैं, तो HTML Agility Pack है, जो आपके उद्देश्यों को पूरा कर सकता है।

0

आप विकृत XML को XmlDocument में लोड नहीं कर सकते हैं। CodePlex

1

पर बाहर Html Agility Pack

चेक वह विशिष्ट जरूरतों ont आधार पर, आप सफाई के लिए HTML Tidy दस्तावेज़ उपयोग करने के लिए है, तो XmlDocument ऑब्जेक्ट का उपयोग कर इसे आयात कर सकता है।

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