Ich habe ein großes XML-Dokument in einer Zeichenfolge. Was ist der beste Weg zu bestimmen, ob das XML gut gebildet ist?Wie kann man feststellen, ob XML wohlgeformt ist?
Antwort
Etwas wie:
static void Main() {
Test("<abc><def/></abc>");
Test("<abc><def/><abc>");
}
static void Test(string xml) {
using (XmlReader xr = XmlReader.Create(
new StringReader(xml))) {
try {
while (xr.Read()) { }
Console.WriteLine("Pass");
} catch (Exception ex) {
Console.WriteLine("Fail: " + ex.Message);
}
}
}
Wenn Sie gegen eine XSD überprüfen müssen, dann XmlReaderSettings
verwenden.
Führen Sie es einfach durch einen Parser. Das wird die entsprechenden Überprüfungen durchführen (ob es in Ordnung ist).
Wenn es sich um ein großes Dokument handelt (wie angegeben), ist ein ereignisbasierter Parser (z. B. SAX) geeignet, da das Dokument nicht gespeichert wird.
Es ist oft nützlich, XML-Dienstprogramme zur Verfügung zu haben, um diese Art von Dingen zu überprüfen. Ich benutze XMLStarlet, das ist ein Kommandozeilen-Werkzeugsatz für XML-Prüfung/Manipulation.
XmlReader scheint eine gute Wahl, da sie den Datenstrom sollte (nicht die ganze xml laden in einem Rutsch)
Versuchen Sie, eine XmlReader mit einem XmlReaderSettings verwenden, die ConformanceLevel .Document gesetzt hat.