如何验证给定的xpath字符串在C#/ .NET中是否有效?验证.NET中的XPath
我不确定是否运行XPath并捕获异常是一个有效的解决方案(把胆汁搁在喉咙里一会儿) - 如果明天我遇到了其他我没有测试过的输入呢?
如何验证给定的xpath字符串在C#/ .NET中是否有效?验证.NET中的XPath
我不确定是否运行XPath并捕获异常是一个有效的解决方案(把胆汁搁在喉咙里一会儿) - 如果明天我遇到了其他我没有测试过的输入呢?
如何验证给定的XPath字符串在C#/ .NET中是否有效?
您尝试从它构建一个XPathExpression
并捕获异常。
try
{
XPathExpression.Compile(xPathString);
}
catch (XPathException ex)
{
MessageBox.Show("XPath syntax error: " + ex.Message);
}
使用'温和'的正则表达式来过滤掉完整的垃圾。如果通过正则表达式,只是执行查询,并捕获异常,如上面提到...
答案是非常接近到什么托默勒格写的(固定的编译错误&把强制性身体向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);
}
}
}
对于除@Tomalak's answer一个较短的版本,你可以使用XPathExpression.Compile方法:
string xpath = "/some/xpath";
try
{
XPathExpression expr = XPathExpression.Compile(xpath);
}
catch (XPathException)
{
}
试试它的东西,特别是?我无法得到一些其他代码路径将失败(在其他文本上运行此XPath时) – ripper234 2008-11-21 14:42:45
Darn。我只是把它输入到答案中,而不是先用VS来试。当然“XPathDocument”是错误的。 – Tomalak 2008-11-21 15:32:52