2009-01-14 10 views
6

क्या सबसे आसान/सरल/साफ करने के लिए तरीका है:.net में xml फ़ाइल को सत्यापित और पढ़ने का सबसे आसान तरीका?

  1. फाइल सिस्टम
  2. मान्य एक XSD के विरुद्ध से एक xml फ़ाइल पढ़ें चर में xml फ़ाइल की
  3. पढ़ें भागों

.NET का उपयोग करना।

उत्तर

6

रिपोर्टिंग आप करना चाहते हैं सहिष्णुता और त्रुटि के स्तर पर निर्भर करता है, आप नए XML API .NET 3.5 में शुरू की उपयोगी होने के लिए मिल सकती है।

नए एक्सएमएल एपीआई का डिज़ाइन पुराने XMLDocument डिज़ाइन से सीखे गए पाठों से काफी प्रभावित था, और इसका उपयोग करने के लिए बहुत हल्का और आसान है।

+0

मुझे लगता है कि यह वही है जो मैं ढूंढ रहा था। धन्यवाद! – dtc

2

XMLDocument और XMLNode ऑब्जेक्ट्स का उपयोग करें।

आप एक्सएमएल दस्तावेज़ लोड करने के लिए XMLDocument में लोड और लोडएक्सएमएल विधियों का उपयोग कर सकते हैं। फिर आप उस नोड के XPath के आधार पर मान प्राप्त करने के लिए SelectSingleNode का उपयोग कर सकते हैं। या आप पूरे नोड में लोड करने के लिए SelectNodes विधि का उपयोग कर सकते हैं।

आप एक्सएमडी के खिलाफ एक्सएमएल को वैध करने के लिए XMLDocument ऑब्जेक्ट की मान्य विधि का उपयोग कर सकते हैं। कक्षाएं XDocument, XElement, XAttribute और इतने पर, सभी System.Xml.Linq namespace से -

10

असल में, एक एक्सएसडी सत्यापन प्राप्त करने के लिए, आपको रीडरसेटिंग के साथ एक एक्सएमएल रीडर का उपयोग करना होगा जो परिभाषित करता है कि एक्सएसडी फ़ाइल किसके खिलाफ मान्य है, और सत्यापन त्रुटियों को प्रतिक्रिया/पकड़ने के लिए ईवेंट।

XSD फ़ाइल को पढ़ने के लिए, कुछ इस तरह का उपयोग करें: किसी भी त्रुटि को पकड़ने के लिए

StreamReader xsdReader = new StreamReader(xsdFileName); 
XmlSchema Schema = new XmlSchema(); 
Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler)); 

और ईवेंट हैंडलर कि दिखाई दे सकते हैं, जबकि XSD पढ़ने (अपने आप में अगर यह जैसे अमान्य है) इस के लिए होता है हस्ताक्षर:

private static void XSDValidationEventHandler(object sender, ValidationEventArgs e) 

त्रुटि संदेश e.Message में है।

एक बार जब आप XSD स्मृति में लोड करने के बाद अपनी XmlReader का दृष्टांत और XSD सत्यापन लागू करने के लिए उचित सेटिंग्स का उपयोग करें:

XmlReaderSettings ReaderSettings = new XmlReaderSettings();  
ReaderSettings.ValidationType = ValidationType.Schema; 
ReaderSettings.Schemas.Add(Schema); 
ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler); 

यह त्रुटि ईवेंट हैंडलर के ऊपर एक के रूप में ही हस्ताक्षर हैं। किसी भी मान्यता त्रुटियां हुईं हैं, तो आपके ईवेंट हैंडलर बुलाया गया था

XmlTextReader xmlReader = new XmlTextReader(xmlFileName); 
XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings); 
while (objXmlReader.Read()) { } 

, और तुम वहाँ और जैसे में त्रुटि संदेश पर कब्जा कर सकते हैं:

तो वास्तव में समाप्त करने के लिए शुरू से ही फ़ाइल को पढ़ने उन्हें उपयोगकर्ता को प्रदर्शित करें (या सिर्फ एक झंडा है कि सत्यापन सफल था या नहीं - आपका कॉल :))

+0

धन्यवाद। यह भी मैं जो खोज रहा था उसका हिस्सा भी है। काश मैं समाधान के रूप में दो उत्तरों को चिह्नित कर सकता हूं। – dtc

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