我正在使用 apache JXPath 库来解析 XML。我试图在 JXPath 中找到一个 API,它的功能与 XPath 评估类似,即检查 xpath 表达式是否存在?它的相似之处在于
<xsl:when test="
Run Code Online (Sandbox Code Playgroud)
使用 xslt 时。使用 XPath 我可以类似地做
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
InputSource source = new InputSource(new StringReader(xml));
status = xpath.evaluate("/resp/status/solution", source);
Run Code Online (Sandbox Code Playgroud)
如果解决方案不存在,那么它会将状态返回为空。现在,在使用 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 无值”。对于实现特定的逻辑,如果表达式不返回数据/不存在,我需要放置和 if-else 块。
任何关于此的指针将不胜感激。
谢谢
您可以JXPathNotFoundException通过将上下文设置为Lenient:
JXPathContext context = JXPathContext.newContext(myDoc);
context.setLenient(true);
Run Code Online (Sandbox Code Playgroud)
宽松模式 如果提供的 xpath 未映射到现有属性,则 context.getValue(xpath) 方法将引发异常。可以通过调用 context.setLenient(true) 来放松此约束。在宽松模式下,如果路径映射为空,则该方法仅返回 null。
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |