validate an xpath expression in Java

2020-04-02 07:17发布

问题:

Given an user input string, how can I tell whether it is a valid Xpath expression or not in Java. Just curious, since I cannot find a way to do it using javax.xml.xpath library. Thanks.

回答1:

I assume you want to validate the syntax but not if the expression is valid within the context of a your xml or xml schema. You can use the compile(..) method and it will throw an exception if the xpath is incorrect w.r.t the syntax.

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


回答2:

Run the XPath against some example XML document (e.g. <a/>). In most cases it won't return anything, but what you care about is whether it will throw an exception.