Но как я могу проверить, является ли строка somestring хорошо сформированным XML. Является ли Try Catch единственным способом сделать это?
Ответ 1
Является ли Try Catch единственным способом сделать это?
Нет метода TryParse для XDocument, поэтому try-catch, вероятно, лучший выбор. Также рассмотрите проверку своего XML в отношении схемы, поскольку он не только проверит, правильно ли сформирован XML, но также проверяет ограничения.
Если вам нужно только проверить, правильно ли сформирован документ, самым быстрым способом является использование 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, поэтому исключения являются одинаковыми, если вам нужно их проанализировать.