3 Stimmen

Validierung von XML über XSD in C# mit Zugriff auf ungültige Elemente

Ich möchte meine XML-Datei mit XSD-Schemata validieren. Ich verwende:

var settings = new XmlReaderSettings();
settings.ValidationFlags = XmlSchemaValidationFlags.AllowXmlAttributes
    | XmlSchemaValidationFlags.ProcessIdentityConstraints
    | XmlSchemaValidationFlags.ProcessInlineSchema        
    | XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new ValidationEventHandler(settings_ValidationEventHandler);
settings.Schemas.Add(xsc);
var vreader = XmlReader.Create(stream, settings);
while (vreader.Read());

Und wenn ein Fehler auftritt, habe ich schöne, für den Menschen lesbare Informationen in meinem Handler. Aber ich möchte den Knoten wissen, der den Fehler verursacht hat. Es gibt keinen Zugriff auf ein Objekt wie XmlElement oder etwas Ähnliches. Gibt es eine Möglichkeit, dies zu tun?

1voto

Petru Gardea Punkte 21018

Ich kenne keinen einfachen Weg, dies zu tun... Ich würde damit beginnen, mir die SchemaInfo Eigenschaft, die mit einem Knoten verbunden ist; intuitiv, je nach Fehler, kann es sein, dass man sie gar nicht bekommt...

Der einzige andere "Schlüssel" zwischen diesen könnte die Zeilen-/Spaltennummer sein, die dann mit einem Querindex versehen werden kann (Sie müssen die dies lesen ist also die Verwendung von Xml.Linq).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X