xsltcontext nombres net necesario leer example espacios administrador c# .net xpath

nombres - xpath c#



Verificar un XPath en.NET (4)

¿Cómo puedo verificar que una cadena xpath determinada sea válida en C # /. NET?

No estoy seguro de que solo ejecutar el XPath y atrapar excepciones sea una solución válida (dejando de lado la bilis en mi garganta por un momento) - ¿y si mañana encuentro algún otro aporte que no haya probado?


La respuesta está muy cerca de lo que escribió Tomalak (error de compilación fijo y poner un cuerpo obligatorio en el XML):

public static class XPathValidator { /// <summary> /// Throws an XPathException if <paramref name="xpath"/> is not a valid XPath /// </summary> public static void Validate(string xpath) { using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("<xml></xml>"))) { XPathDocument doc = new XPathDocument(stream); XPathNavigator nav = doc.CreateNavigator(); nav.Compile(xpath); } } }


Use una expresión regular ''suave'' para filtrar la basura completa. Si pasa la expresión regular, solo ejecuta la consulta y detecta excepciones, como se mencionó anteriormente ...


¿Cómo puedo verificar que una cadena XPath dada sea válida en C # /. NET?

Intenta crear una XPathExpression desde allí y captura la excepción.

try { XPathExpression.Compile(xPathString); } catch (XPathException ex) { MessageBox.Show("XPath syntax error: " + ex.Message); }


Para una versión más corta que la respuesta de @ Tomalak , puede usar el método XPathExpression.Compile :

string xpath = "/some/xpath"; try { XPathExpression expr = XPathExpression.Compile(xpath); } catch (XPathException) { }