2010-03-09 17 views
6

सी #/.NET 2.0 में, जब मैं serializeXmlSerializer का उपयोग कर ऑब्जेक्ट करता हूं, तो XML स्कीमा के विरुद्ध आउटपुट को सत्यापित करने का सबसे आसान तरीका क्या है?मैं XmlSerializer के आउटपुट को कैसे सत्यापित कर सकता हूं?

समस्या यह है कि XmlSerializer के साथ अमान्य एक्सएमएल लिखना बहुत आसान है, और मुझे XML को मान्य करने का कोई तरीका नहीं मिल रहा है जो बोझिल नहीं दिखता है। आदर्श रूप में मैं XmlSerializer में स्कीमा सेट करने की अपेक्षा करता हूं या XmlWriter को मान्य करता हूं जो मान्य करता है।

+0

.NET 4 में अप्रत्याशित तत्वों को पकड़ने के लिए ईवेंट हैं। –

उत्तर

4

क्या फिर से एक मान्य पाठक

का उपयोग करने में इसे पढ़ने के बारे में यहां एक त्वरित चाकू यह

Stream stream = new MemoryStream(Encoding.UTF8.GetBytes("<YourXml />")); 
var input = mappingAssembly.GetManifestResourceStream(
      "MySchema.xsd" 
      ); //This could be whatever resource your schema is   
var schemas = new XmlSchemaSet();    
schemas.Add(
    "urn:YourSchemaUrn", 
    XmlReader.Create(
     input 
    ) 
); 

var settings = new XmlReaderSettings 
          { 
           ValidationType = ValidationType.Schema, 
           Schemas = schemas 
          }; 

settings.ValidationEventHandler += MakeAHandlerToHandleAnyErrors; 

var reader = XmlReader.Create(stream, settings); 
while (reader.Read()) {} //Makes it read to the end, therefore validates 

तुम कुछ जब त्रुटियां होने करने के लिए कुछ हैंडलर की आवश्यकता होगी पर है।

0

आप XSD स्कीमा के विरुद्ध XML फ़ाइल को सत्यापित करने के लिए XmlReader का उपयोग कर सकते हैं।

+1

सच है, लेकिन इसका मतलब है कि मुझे एक्सएमएल लिखना है, इसे कहीं स्टोर करना है, और इसे फिर से पढ़ना है। मैंने आशा की थी कि इसे उड़ान भरने का एक आसान तरीका था। –

+0

XmlSerializer एक एक्सएसडी स्कीमा के खिलाफ सत्यापन का समर्थन नहीं करता है क्योंकि यह किसी ऑब्जेक्ट से XML उत्पन्न करता है जो हमेशा मान्य होना चाहिए। –

+0

हालांकि यह मामला नहीं है। ऐसा लगता है कि यदि आवश्यक मान शून्य है तो आवश्यक तत्वों को छोड़ दिया जाता है। और शायद अन्य चीजें XmlSerializer द्वारा समर्थित नहीं हैं (तारों, विशिष्टता, मुख्य संदर्भों के लिए लंबाई और पैटर्न बाधाएं)। –

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