2013-10-22 4 views
12

मैंXDocument.Parse सफलता या विफलता?

XDocument doc = XDocument.Parse(somestring); 

उपयोग कर रहा हूँ लेकिन कैसे करना है मैं मान्य करता है, तो स्ट्रिंग somestring एक अच्छी तरह से गठित XML है। Try Catch ऐसा करने का एकमात्र तरीका है?

+2

एक्सएमएल दस्तावेजों को हमेशा अच्छी तरह से गठित माना जाता है क्योंकि वे आम तौर पर मशीन से उत्पन्न होते हैं। उस नियम के अपवादों की रिपोर्ट अच्छी तरह से की जाती है, अपवाद :) –

उत्तर

13

क्या ऐसा करने का एकमात्र तरीका पकड़ने का प्रयास करें?

XDocument के लिए कोई TryParse विधि नहीं है, इसलिए try-catch शायद सबसे अच्छा शर्त है। स्कीमा के खिलाफ अपने एक्सएमएल को मान्य करने पर भी विचार करें क्योंकि यह न केवल जांच करेगा कि एक्सएमएल अच्छी तरह से गठित है या नहीं, बल्कि बाधाओं के लिए भी जांच करता है।

आप देख सकते हैं:

var isWellFormedXml = true; 
try 
{ 
    using (var reader = XmlReader.Create(stream)) // can be a mem stream for string validation 
    { 
     while (reader.Read()) {} 
    } 
} 
catch 
{ 
    isWellFormedXml = false; 
} 

इस तरह आप नहीं है: Validation Against XML Schema (XSD) with the XmlValidatingReader

+1

लिंक बदल गया है - संपादित एफवाईआई। – simonalexander2005

+1

@ simonalexander2005, संपादन के लिए धन्यवाद – Habib

5

आप केवल कि क्या दस्तावेज़ अच्छी तरह से बनाई है जांच करने की आवश्यकता है, तो सबसे तेज़ तरीका है के रूप में इस XmlReader उपयोग करने के लिए है XDocument डोम के लिए स्मृति खर्च करें। बीटीडब्ल्यू, एक्स डॉक्यूमेंट.पर्स() एक्सएमएल प्रोसेसिंग के लिए एक्सएमएल रीडर का उपयोग करता है, इसलिए अपवाद समान हैं, अगर आपको उनका विश्लेषण करने की आवश्यकता है।

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