java - xpath 获取多个节点值 - 使用 java 的 xml 解析器

标签 java xml xpath xml-parsing

下面是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/

相关文章:

android - 你如何在android中解析HTML?

php - XPath 按值获取节点

python - Xpath bool OR(相当于 Python 的 A | B : return A if non-empty, 否则 B)

python - 使用 XPATH 检索不属于 <a> 的文本节点,python selenium?

java - 将简单的 XML 行优雅地转换为 Map

xml - 使用 XPath 提取字符串的一部分

java - 引用自己的wsdl url

java - 实例初始化器与构造器有何不同?

java - 使用 elasticSearch 和 Spring Boot 创建 bean 时出错

java - 根据事实通过带参数的 puppet 启动应用程序