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?
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?
Try Catch è l'unico modo per farlo?
Non esiste un metodo per TryParse
XDocument
, 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
è stato modificato - modificato FYI. – simonalexander2005
@ simonalexander2005, grazie per la modifica – Habib
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.
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 –