【问题标题】:How to scroll a list of tags from the first to the last using XPATH?如何使用 XPATH 将标签列表从第一个滚动到最后一个?
【发布时间】:2013-12-07 14:00:48
【问题描述】:

我在 XML Parsing 和 Java 中的 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>

我要做的第一件事是获取唯一 &lt;id&gt;0&lt;/id&gt; 标记中的值,我已经使用以下 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 文档)

这很好用,并将 &lt;id&gt;0&lt;/id&gt; 标记内的值 0 放入我的 objectElement 对象中。

好的, 现在我必须执行一个更复杂的操作(我对如何操作没有太多想法),即以下操作:

如您所见,我有一个名为 objectList 的标记,其中包含 3 个名为 object 的标记,它们表示具有一些属性的 3 个 Java 对象的列表(property1 property2property3 将 3 个变量放入相关的 Java 对象中)

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

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

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

Tnx

安德烈亚

【问题讨论】:

  • XPath 是错误的,您想选择所有具有 id 属性的 objectList/object 节点,然后您可以对它们进行 foreach。例如/root/objectlist/object[@id]
  • 好的,但是...我如何知道 标签内的 标签的数量?
  • @TonyHopkinson 或者我不明白你在说什么?

标签: java xml xpath xml-parsing jdom


【解决方案1】:

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

【讨论】:

  • mmm 不,它不能按我的意愿工作,因为它为我创建了一个节点列表,但该列表具有以下形状: objectsList: [[Element: ], [Element: ]] 似乎只需要外部 标签而不是它的内容:-(
  • 内容在里面,你只需要另一个 Xpath 表达式,例如“property1”,你可以从列表中的每一个中执行。
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 2022-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 2021-02-26
  • 1970-01-01
相关资源
最近更新 更多