




How can I verify a given XPath string is valid in C#/.NET?
Вы пытаетесь собрать из него XPathExpression и перехватываете исключение.
try
{
XPathExpression.Compile(xPathString);
}
catch (XPathException ex)
{
MessageBox.Show("XPath syntax error: " + ex.Message);
}
Штопать. Я просто ввел его в ответ, вместо того, чтобы сначала пробовать его с VS. Конечно, "XPathDocument" ошибался.
Простой .. XPathExpression.Compile (xPathString); делает то же самое
@Prasad Ты прав, тогда я думал слишком сложно. Зафиксированный. Спасибо!
Используйте «мягкое» регулярное выражение, чтобы отфильтровать полный мусор. Если он передает регулярное выражение, просто выполните запрос и перехватите исключения, как указано выше ...
Ответ очень близок к тому, что написал Томалак (исправлена ошибка компиляции и помещено обязательное тело в 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);
}
}
}
Пожалуйста, проверьте мой ответ еще раз, я вообще не собирался использовать "XPathDocument".
Для более короткой версии, чем @ Ответ Томалака, вы можете просто использовать метод XPathExpression.Compile:
string xpath = "/some/xpath";
try
{
XPathExpression expr = XPathExpression.Compile(xpath);
}
catch (XPathException)
{
}
Попробовать на чем конкретно? Разве я не могу перейти к другому пути кода, который не удастся (при запуске этого XPath с другим текстом)