Java按照它们在xml文档中出现的顺序检索具有不同标记名称的子节点

时间:2012-03-14 21:13:58

标签: java xml dom

我有一个看起来像这样的xml文件......

<RootElementTag>
   <ChildElementTag1 attribute1="value1" />
   <ChildElementTag1 attribute1="value2" />
   <ChildElementTag1 attribute1="value4" />
</RootElementTag>

我必须检索所有“ChildElementTag1”节点,并按照它们在文件中出现的顺序处理它们。我使用了org.w3c.dom.Document.getElementsByTagName("ChildElementTag1");,它按照它在xml文件中出现的顺序返回了NodeList。

现在xml发生了一些变化,并且包含了一个具有不同标记名称“ChildElementTag2”的新Child节点。

<RootElementTag>
   <ChildElementTag1 attribute1="value1" />
   <ChildElementTag1 attribute1="value2" />
   <ChildElementTag2 attribute2="value3" />
   <ChildElementTag1 attribute1="value4" />
   <ChildElementTag2 attribute2="value5" />
</RootElementTag>

有没有办法按照它们出现的顺序获取上述xml片段中的所有5个子元素节点。

注意: - 我确实看到了org.w3c.dom.Document.getElementById()方法,它需要我为每个子节点引入一个“id”属性,并根据它们的“id”属性值对它们进行排序。截至目前,我并没有采取这种方法,希望有一种更简单的方法。

1 个答案:

答案 0 :(得分:2)

RootTagElement节点上调用getChildNodes()


  

此方法的javadoc未提及NodeList按文档中显示的顺序返回。

我怀疑你会发现它们与文档中显示的顺序相同。 OTOH,您也可以查看我链接的下方列出的方法。特别是getFirstChild()&amp; getNextSibling()(您可以在第一个孩子上调用,然后重复调用null)。