XDocument.Parse Success или Failure?
Я использую
XDocument doc = XDocument.Parse(somestring);
Но как я могу проверить, является ли строка somestring
хорошо сформированным XML. Является ли Try Catch
единственным способом сделать это?
Ответы
Ответ 1
Является ли Try Catch единственным способом сделать это?
Нет метода TryParse
для XDocument
, поэтому try-catch
, вероятно, лучший выбор. Также рассмотрите проверку своего XML в отношении схемы, поскольку он не только проверит, правильно ли сформирован XML, но также проверяет ограничения.
Вы можете увидеть: Валидация против схемы XML (XSD) с XmlValidatingReader
Ответ 2
Если вам нужно только проверить, правильно ли сформирован документ, самым быстрым способом является использование XmlReader следующим образом:
var isWellFormedXml = true;
try
{
using (var reader = XmlReader.Create(stream)) // can be a mem stream for string validation
{
while (reader.Read()) {}
}
}
catch
{
isWellFormedXml = false;
}
Таким образом, вы не тратите память на DOM XDocument. BTW, XDocument.Parse() использует XmlReader для обработки XML, поэтому исключения являются одинаковыми, если вам нужно их проанализировать.