在Java中验证XPath表达式

12

给定一个用户输入的字符串,如何在Java中判断它是否为有效的XPath表达式。我只是很好奇,因为我无法使用javax.xml.xpath库找到一种方法来实现它。谢谢。


你应该接受每个问题的答案……这会让人们不太可能花时间和精力来帮助你,而且也有点不感激。 - Troyseph
2个回答

29

我假设您想验证语法,而不是在xml或xml模式的上下文中验证表达式是否有效。您可以使用编译(..)方法,如果xpath与语法不正确,它将抛出异常。

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//book[author='Abc']/title/text()");

如果我想要“lint” XPath 怎么办?例如,“//book[ 'Abc' ]”将编译(并返回 true)。但是,我的所有测试都使用 XPath,我需要测试我的测试,那么如何检测它应该是“//book[ @author = 'Abc' ]”呢? - Phlip

1

对一些示例 XML 文档(例如 <a/>)运行 XPath。在大多数情况下,它不会返回任何内容,但你关心的是它是否会抛出异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接