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)
{
}