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

时间:2013-11-22 15:56:14

标签: 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查询(并且此查询工作正常):< / p>

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文档)

这很好用,并将 objectElement 对象放在 <id>0</id> 标记内的值0。

确定, 现在我必须执行一个更复杂的操作(我对它是如何做的没有太多想法),如下所示:

如您所见,我有一个名为 objectList 的标记,其中包含3个名为 object 的标记,表示包含一些属性的3个Java对象的列表( property1 property2 property3 ,这将是相关Java对象中的3个变量)

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

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

有些想法?有人可以帮我做吗?

TNX

安德烈

1 个答案:

答案 0 :(得分:1)

@TonyHopkinson指出你使用了expath表达式/root/objectlist/object[@id] 然后使用selectNodes() selectSingleNode() mothod insead {{1}}。前者返回一个可以迭代的列表。