Кто-нибудь знает, как я могу проверить, содержит ли строка хорошо сформированный XML, не используя что-то вроде XmlDocument.LoadXml()
в блоке try/catch? У меня есть данные, которые могут быть или не быть XML, и я хочу, чтобы код, который распознает, что вход может быть не XML, не полагаясь на try/catch, как по скорости, так и по общему принципу, что не исключительные обстоятельства не должны поднимать исключения. В настоящее время у меня есть код, который делает это:
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;
}
}
Но это похоже на то, что не должно требовать try/catch. Исключение вызывает адский ад во время отладки, потому что каждый раз, когда я проверяю строку, отладчик будет ломаться здесь, "помогая" мне с моей надоедливой проблемой.