我在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
安德烈
答案 0 :(得分:1)
@TonyHopkinson指出你使用了expath表达式/root/objectlist/object[@id]
然后使用selectNodes()
selectSingleNode()
mothod insead {{1}}。前者返回一个可以迭代的列表。