java - 如何使用 XPATH 将标签列表从第一个滚动到最后一个?

标签 java xml xpath xml-parsing jdom

我对 Java 中的 XML 解析XPATH 查询 绝对是新手,但遇到以下问题:

我有以下 XML 文件,我必须对其进行一些查询:

<?xml version="1.0" encoding="UTF-8"?>
<root>

  <status>
    <id>0</id>
    <message />
  </status>

  <objectList>
    <object id="obj1">
      <property1>value</property1>
      <property2>value</property2>
      <property3 />
    </object>

    <object id="obj2 ">
      <property1>value</sproperty1>
      <property2>value</property2>
      <property3>value</property3>
    </object>

    <object id="obj3 ">
      <property1>value</sproperty1>
      <property2>value</property2>
      <property3>value</property3>
    </object>

  </objectList>
</root>

我要做的第一件事是获取唯一的 <id>0</id>内的值 标签,我使用以下 XPATH 查询来完成此操作(并且此查询运行良好):

XPath xPath = XPath.newInstance("s:Envelope/s:Body");
xPath.addNamespace("s", "http://schemas.xmlsoap.org/soap/envelope/");


org.jdom.Element objectElement = (Element) xPath.selectSingleNode(documentXML);
System.out.println("objectElement: " + objectElement);

(其中 documentXML 包含先前的 XML 文档)

这工作得很好,并将 <id>0</id> 内的值 0 放入我的 objectElement 对象中。 标签。

好的, 现在我必须执行一项更复杂的操作(并且我对如何操作没有太多想法),如下所示:

正如你所看到的,我有一个名为 objectList 的标签,其中包含 3 个名为 object 的标签,它们代表具有一些属性的 3 个 Java 对象的列表 (property1 property2property3 这将是相关 Java 对象中的 3 个变量)

现在我必须执行以下操作:为 XML 文档中的每个对象标记创建一个新的 Java 对象,并将属性子标记值放入新 Java 对象中的相关值中

问题是我不知道如何滚动浏览我的 obecjt 标签列表 标签(从第一个到最后一个)

有什么想法吗?有人可以帮我做吗?

Tnx

安德里亚

最佳答案

正如 @TonyHopkinson 指出的,您使用 expath 表达式 /root/objectlist/object[@id] 然后使用 selectNodes() 方法代替 selectSingleNode()。前者返回一个可以迭代的列表。

关于java - 如何使用 XPATH 将标签列表从第一个滚动到最后一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149106/

相关文章:

Java 程序不会终止

java - JPA 2.0 EclipseLink 检查唯一性

iOS 解析整个 XML 元素

java - 当只有一个对象时将XML转换为Json数组Java

Excel - 从字母数字字符串中提取所有数字

html - 在网页抓取期间修改 HTML 内容

python - 如何使用 xpath/css 选择器单击 drupal 8 网站中的动态链接,同时通过 Selenium 和 Python 实现自动化

java - 如何获得标识 Java 节点的 XPath 表达式?

java - Android - 将 XML 架构发布到 PHP 服务器 API

java - 如何检查对象是否实现了特定的接口(interface),而不是这个接口(interface)的后代,在 Java 中