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

Java 如何使用XPATH将标记列表从第一个滚动到最后一个?,java,xml,xpath,xml-parsing,jdom,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">

我对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>
(其中文档XML包含上一个XML文档)

这很有效,并将
0
标记中的值0放入我的objectElement对象中

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

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

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

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

有什么想法吗?有人能帮我吗

Tnx


Andrea

正如@TonyHopkinson所指出的,您使用expath表达式
/root/objectlist/object[@id]

然后使用
selectNodes()
方法插入
selectSingleNode()
。前者返回一个可以迭代的列表。

XPath是错误的,您需要选择具有id属性的所有objectList/对象节点,然后可以对它们执行foreach。e、 g./root/objectlist/object[@id]好的,但是……我怎么知道标签里面的标签的数量呢?@TonyHopkinson或者我不明白你在说什么?嗯,不,它没有按照我想要的那样工作,因为它创建了一个节点列表,但是这个列表有以下形状:objectsList:[[Element:],[Element:]似乎只接受外部标记,而不接受其内容:-(内容在其中,您只需要另一个Xpath表达式,例如“property1”,您可以从列表中的每个表达式执行此操作。
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);