getChildNodes()返回的DOM NodeList的顺序

时间:2008-09-15 19:36:45

标签: java xml dom

DOM方法getChildNodes()返回当前NodeList子项的Node个。虽然订购了NodeList,但列表是否保证按文档顺序排列?

例如,给定<a><b/><c/><d/></a> a.getChildNodes()保证在NodeListbc 中返回d为了

javadoc对此并不清楚。

6 个答案:

答案 0 :(得分:4)

根据我的经验,是的。 DOM spec并不是更清楚。如果你是偏执狂,尝试类似

的东西
current = node.firstChild;
while(null != current) {
    ...
    current = current.nextSibling;
}

答案 1 :(得分:2)

文档排序节点列表是DOM的其他实现中的行为,例如Javascript或Python。随机排序的节点列表完全没用。我认为依赖于按文档顺序返回的节点是安全的。

答案 2 :(得分:2)

我的经验是,每次我都费心去看它一直是按文件顺序排列的。但是,我相信我在某个地方读到它不能保证按文档顺序排列。我现在找不到我在哪里阅读,所以把它当作传闻。我认为,如果必须按文档顺序排列它们,最好的选择是使用FirstChild然后使用NextSibling,直到没有更多的同胞。

答案 3 :(得分:0)

我很想告诉你,这是有保证的(我相信它是这样),但Document Object Model specification本身在这种情况下似乎含糊不清。我很确定它总是文档顺序。

答案 4 :(得分:0)

在您的示例中,如图所示。我相信是这样。但是,我已经体验过将空间解释为节点的真实体验:


<a><b/><c/><d/></a>

不同


<a><b/> <c/><d/></a>

如果您正在查看索引[1],则Firefox和IE可能会显示不同的结果。我会根据你的需要建议不要依赖订单。

答案 5 :(得分:0)

是的,它们是有序的,因为它返回一个nodeList,你必须说getNamedChildNodes来获得一个未按照namedNodeList排序的列表。