下面是xml文件
<priority-claims>
<priority-claim sequence="1" kind="national">
<document-id document-id-type="maindoc">
<doc-number>FD0297663</doc-number>
<date>20070403</date>
</document-id>
</priority-claim>
<priority-claim sequence="2" kind="national">
<document-id document-id-type="maindoc">
<doc-number>FD0745459P</doc-number>
<date>20060424</date>
</document-id>
</priority-claim>
</priority-claims>
我的预期条件:
1.如何获取所有节点值(即FD0297663、20070403和FD0745459P,20060424
)
2.它可以是单个级别(即优先级声明标签),也可以是多个级别
我现有的代码仅获得第一级值
String priorityNumber = xPath.compile("//priority-claim//doc-number").evaluate(xmlDocument);
String priorityDate = xPath.compile("//priority-claim//date").evaluate(xmlDocument);
最佳答案
下面是一个工作示例:
- 更新了 xpath 表达式(例如
/priority-claims/priority-claim/document-id/doc-number/text()
) 使用
NodeList
NodeList priorityNumbers = (NodeList) xPath.compile("/priority-claims/priority-claim/document-id/doc-number/text()").evaluate(xmlDocument, XPathConstants.NODESET); NodeList priorityDates = (NodeList) xPath.compile("/priority-claims/priority-claim/document-id/date/text()").evaluate(xmlDocument,XPathConstants.NODESET); for(int i=0; i<priorityNumbers.getLength();i++){ System.out.println(priorityNumbers.item(i).getNodeValue()); } for(int i=0; i<priorityDates.getLength();i++){ System.out.println(priorityDates.item(i).getNodeValue()); }
这里是一个可运行版本的要点链接:https://gist.github.com/rparree/1c7eb8e9ca928b98418fdb167a2096a3
关于java - xpath 获取多个节点值 - 使用 java 的 xml 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480228/