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, поэтому исключения являются одинаковыми, если вам нужно их проанализировать.