给定 xml 片段:
<AddedExtras>
<AddedExtra Code="1234|ABCD" Quantity="1" Supplier="BDA"/>
<AddedExtra Code="5678|EFGH" Quantity="1" Supplier="BDA"/>
<AddedExtra Code="9111|ZXYW" Quantity="1" Supplier="BDA"/>
<AddedExtra Code="9188|ZXYF" Quantity="1" Supplier="BDA"/>
<AddedExtra Code="9199|ZXYG" Quantity="1" Supplier="BDA"/>
</AddedExtras>
以下代码片段将上述 xml 作为已解析的文档读取,并使用 xpath 表达式提取“Code”属性:
public String getNodeValuesFromNodeList(Document doc, String expression){
NodeList nodeList = null;
try {
nodeList = (NodeList) xpath.compile(expression).evaluate(doc, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return nodeList.toString();
}
返回的列表是一个对象 (org.apache.xml.dtm.ref.DTMNodeList@58cf8f94),而不是字符串列表 - 如何返回 nodeList,以便它返回以下字符串列表:
Code="1234|ABCD
Code="5678|EFGH
Code="9111|ZXYW
Code="9188|ZXYF
Code="9199|ZXYG
那么,如何只返回前 2 个(作为示例)?
最佳答案
如果您的 XPath 表达式选择属性,并且您想要属性的值,则可以使用类似于以下内容的循环:
List<String> codes = new ArrayList<>();
for (int i = 0; i < nodeList.getLength(); ++i) {
Attr attr = (Attr)nodeList.item(i);
codes.add(attr.getValue());
}
关于java - 从解析的 XML 文档返回 NodeList 的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40958736/