我正在使用Java并尝试解析XML文档。我有一个文档,其中有两个兄弟标签,其元素名称相同,如下所示:
<directory>
... <!-- other data and elements -->
<application id="ID1">
</application>
... <!-- other elements -->
<application id="ID2">
</application>
... <!-- other element and data -->
</directory>
我使用Xerces来解析XML并使用NodeIterator
来处理它。我想从上面的示例XML中获取其属性<application>
的第二个元素id="ID2"
。使用方法getElementsByTagName("tagname")
时,返回的元素始终是其属性id="ID1"
的第一个元素。
如何获得具有相同名称和相似属性的第二个元素,尽管属性的值不同?
答案 0 :(得分:1)
getElementsByTagName("application")
返回NodeList
。要获取第二个元素,可以使用
NodeList applications = getElementsByTagName("application");
Node second = applications.item(1);
如果您想确定,则需要遍历applications
,直到找到包含id == "ID2"
的节点:
for( int i=0; i<applications.length(); i++) {
Node node = applications.item(i);
if(!(node instanceof Element)) continue;
Element e = (Element) node;
String id = e.getAttributeNode("id").getValue();
if("ID2".equals(id)) {
... do something with the node ...
}
}
注意:如果可以,请尝试切换到JDOM2。它有一个更好的API,特别是当你使用Java 6或更好。