Кто-нибудь знает, как я могу проверить, содержит ли строка правильно сформированный XML, не используя что-то вроде XmlDocument.LoadXml()
в блоке try / catch? У меня есть входные данные, которые могут быть или не быть XML, и мне нужен код, который распознает, что входные данные не могут быть XML, не полагаясь на попытку / улов, как по скорости, так и по общему принципу, что не исключительные обстоятельства не должны вызывать исключения. В настоящее время у меня есть код, который делает это;
private bool IsValidXML(string value)
{
try
{
// Check we actually have a value
if (string.IsNullOrEmpty(value) == false)
{
// Try to load the value into a document
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(value);
// If we managed with no exception then this is valid XML!
return true;
}
else
{
// A blank value is not valid xml
return false;
}
}
catch (System.Xml.XmlException)
{
return false;
}
}
Но, похоже, что-то, что не должно требовать попытки / улова. Исключение вызывает веселый ад во время отладки, потому что каждый раз, когда я проверяю строку, отладчик ломается здесь, «помогая» мне с моей неприятной проблемой.