2009-01-14 3 views

Antwort

6

Abhängig von der Höhe der Toleranz und die Fehlerberichterstattung Sie haben wollen, können Sie die neue XML Api in .NET 3.5 eingeführt finden, nützlich zu sein - die Klassen XDocument, XElement, XAttribute und so weiter, die alle aus den System.Xml.Linq namespace.

Das Design des neuen XML Api wurde stark von den Erfahrungen aus dem älteren XMLDocument Design beeinflusst und ist viel leichter und einfacher zu verwenden.

+0

Ich denke, das ist, was ich gesucht habe. Vielen Dank! – dtc

2

Verwenden Sie die Objekte XMLDocument und XMLNode.

Mit den Load- und LoadXML-Methoden in XMLDocument können Sie ein XML-Dokument laden. Dann können Sie den SelectSingleNode verwenden, um einen Wert basierend auf dem XPath dieses Knotens abzurufen. Oder Sie können die SelectNodes-Methode verwenden, um einen ganzen Knoten zu laden.

Sie können die Validate-Methode des XMLDocument-Objekts verwenden, um das XML anhand einer XSD zu überprüfen.

10

Um eine XSD-Validierung in Gang zu setzen, müssen Sie einen XmlReader mit ReaderSettings verwenden, der definiert, für welche XSD-Datei eine Validierung durchgeführt werden soll und welche Ereignisse Validierungsfehler auslösen sollen.

Um die XSD-Datei, verwenden Sie so etwas wie dieses zu lesen:

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

und den Event-Handler alle Fehler abzufangen, die auftauchen könnte, während die XSD Lesen (zB wenn sie in sich selbst ungültig ist) hätte dies Unterschrift:

private static void XSDValidationEventHandler(object sender, ValidationEventArgs e) 

Die Fehlermeldung ist in e.Message.

Sobald Sie die XSD geladen im Speicher haben, Ihr XmlReader instanziiert und die richtigen Einstellungen verwenden XSD Validierung zu erzwingen:

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

Dieser Fehler Event-Handler hat die gleiche Signatur wie die oben.

Dann lesen Sie die Datei tatsächlich von Anfang bis Ende:

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

Sollten Validierungsfehler aufgetreten, wurde Ihr Event-Handler aufgerufen, und Sie können die Fehlermeldungen in dort und zum Beispiel erfassen Zeigen Sie sie dem Benutzer an (oder haben Sie einfach ein Flag, das anzeigt, ob die Validierung erfolgreich war oder nicht - Ihr Anruf :))

+0

Danke. Dies ist auch ein Teil von dem, was ich gesucht habe. Ich wünschte, ich könnte zwei Antworten als Lösungen markieren. – dtc

Verwandte Themen