2013-10-22 9 views
12

Sto usandoXDocument.Parse Success o Failure?

XDocument doc = XDocument.Parse(somestring); 

Ma come faccio a convalidare se la stringa somestring è un XML ben formato. Try Catch è l'unico modo per farlo?

+2

Si presume che i documenti XML siano sempre ben formati poiché sono normalmente generati dalla macchina. Le eccezioni a tale regola sono segnalate da, beh, eccezioni :) Il collegamento –

risposta

13

Try Catch è l'unico modo per farlo?

Non esiste un metodo per TryParseXDocument, quindi try-catch è probabilmente la soluzione migliore. Inoltre, considera la convalida del tuo XML rispetto a uno schema poiché non solo controlla se l'XML è ben formato, ma controlla anche i vincoli.

Si può vedere: Validation Against XML Schema (XSD) with the XmlValidatingReader

+1

è stato modificato - modificato FYI. – simonalexander2005

+1

@ simonalexander2005, grazie per la modifica – Habib

5

Se avete solo bisogno di verificare se il documento è ben formato, il modo più veloce è quello di utilizzare XmlReader come segue:

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

In questo modo non fate spendere memoria per XDocument DOM. BTW, XDocument.Parse() utilizza XmlReader per l'elaborazione di XML, quindi le eccezioni sono le stesse, se è necessario analizzarle.