2013-10-22 10 views
12

Ich bin mitXDocument.Parse Erfolg oder Fehler?

XDocument doc = XDocument.Parse(somestring); 

Aber wie validieren ich, wenn die Zeichenfolge somestring eine gut gebildete XML ist. Ist Try Catch der einzige Weg, dies zu tun?

+2

Es wird angenommen, dass XML-Dokumente immer gut formatiert sind, da sie normalerweise maschinell erzeugt werden. Ausnahmen von dieser Regel werden gemeldet, na ja, Ausnahmen :) –

Antwort

13

Ist Versuch Catch der einzige Weg, dies zu tun?

Es gibt keine TryParse Methode für XDocument, so try-catch ist wahrscheinlich die beste Wahl. Überlegen Sie auch, ob Sie Ihr XML-Dokument gegen ein Schema validieren, da es nicht nur prüft, ob das XML wohlgeformt ist, sondern auch nach Einschränkungen sucht.

Sie sehen können: Validation Against XML Schema (XSD) with the XmlValidatingReader

+1

Link hat sich geändert - bearbeitet FYI. – simonalexander2005

+1

@ simonalexander2005, danke für die Bearbeitung – Habib

5

Wenn Sie nur überprüfen müssen, ob das Dokument wohlgeformt ist, ist der schnellste Weg XmlReader wie folgt zu verwenden:

var isWellFormedXml = true; 
try 
{ 
    using (var reader = XmlReader.Create(stream)) // can be a mem stream for string validation 
    { 
     while (reader.Read()) {} 
    } 
} 
catch 
{ 
    isWellFormedXml = false; 
} 

diese Weise können Sie nicht tun Speicher für XDocument DOM ausgeben. BTW, XDocument.Parse() verwendet XmlReader für die Verarbeitung von XML, sodass die Ausnahmen identisch sind, wenn Sie sie analysieren müssen.

Verwandte Themen