Java 如何使用XPATH将标记列表从第一个滚动到最后一个?
我对Java中的XML解析和XPATH查询非常陌生,我有以下问题: 我有以下XML文件,我必须对其进行一些查询: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">
<?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对象具有一些属性(property1、property2和property3,它们将成为相关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);