【发布时间】:2018-06-03 23:55:05
【问题描述】:
我有下面的 xml 字符串
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Structure>
<LongUnsigned value="142794"/>
<OctetString value="07E2051E030F1E0404800000"/>
<Structure>
<OctetString value="07E2051E030F1E0404800000"/>
<OctetString value="66574536387"/>
<Array>
<Structure><OctetString value="0000000000000001"/><OctetString value="9889892347"/></Structure>
<Structure><OctetString value="00098347586768574"/><OctetString value="6283046502"/></Structure>
<Structure><OctetString value="0000011000000001"/><OctetString value="899734729847586"/></Structure>
</Array>
</Structure>
</Structure>
我正在使用下面的 xpath,但它总是返回一个空字符串。
XPath xPath = XPathFactory.newInstance().newXPath();
try {
String eval = xPath.evaluate("//Structure/Structure/Array", new InputSource(new StringReader(xmlString)));
System.out.println("Eval:" + eval);
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我尝试在线运行这个 xpath,它似乎工作得很好。我在 Java 中缺少什么使其无法按预期工作。
【问题讨论】:
-
上下文不应该是
Document节点吗?你确定使用InputSource作为上下文是正确的吗? -
您的 xml 不包含任何文本数据。您需要调用 3 参数版本的 evaluate 并将 XPathConstants.NODESET 或 XPathConstants.NODE 作为最后一个参数传递。
-
@JimGarrison 也可以。我尝试将
Document和InputSource作为字符串。该字符串实际上是从Document实例生成的。