我正在使用apache JXPath库来解析XML . 我正在尝试在JXPath中找到一个与XPath评估功能类似的API,即检查xpath表达式是否存在?它的线条相似
<xsl:when test="
使用xslt时 . 使用XPath我也可以这样做
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
InputSource source = new InputSource(new StringReader(xml));
status = xpath.evaluate("/resp/status/solution", source);
如果解决方案不存在,那么它将返回状态为null . 现在,在使用JXPath时,我无法在类似的行中找到API . 这是我的示例代码
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder bld = dbfactory.newDocumentBuilder();
文档metaDoc = bld.parse(in);
JXPathContext metaCtx = JXPathContext.newContext(metaDoc);
节点node =(Node)metaCtx.selectSingleNode(“/ resp / status / solution”);
这会抛出“JXPathNotFoundException:xpath没有值” . 对于特定于实现的逻辑,如果表达式没有返回数据/不存在,我需要put和if-else阻塞 .
任何指针都将受到高度赞赏 .
谢谢
2 回答
尝试使用JXPathContext.iterate() . 当没有匹配的节点时,它返回一个空的迭代器(hasNext()返回false) . 如果它至少有一个匹配节点,则调用next()并返回该值 . 否则返回null .
您可以通过将上下文设置为
Lenient
来阻止JXPathNotFoundException
: