¿Alguien sabe cómo puedo verificar si una cadena contiene XML bien formado sin usar algo como XmlDocument.LoadXml()
en un bloque try/catch? Recibí comentarios que pueden ser XML o no, y quiero un código que reconozca que la entrada puede no ser XML sin depender de un try/catch, tanto para la velocidad como sobre el principio general de que circunstancias no excepcionales no deberían aumentar excepciones Actualmente tengo un código que hace esto;¿Comprueba el XML bien formado sin 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;
}
}
Pero parece algo que no debería requerir la prueba/captura. La excepción está causando un infierno durante la depuración porque cada vez que verifico una cadena, el depurador se romperá aquí, 'ayudándome' con mi molesto problema.
Si el depurador es su problema que sólo puede apagar el manejo del usuario XmlExceptions. Use el acceso directo en VS: Ctrl + Alt + E, busque System.Xml.XmlException y desactívelo. – nashwan