Порядок DOM NodeList возвращается методом getChildNodes () - PullRequest
7 голосов
/ 15 сентября 2008

Метод DOM getChildNodes() возвращает NodeList дочерних элементов текущего Node. Пока заказывается NodeList, гарантированно ли список находится в порядке документа?

Например, если <a><b/><c/><d/></a> равно a.getChildNodes(), то гарантированно вернет NodeList с b, c и d в этом порядке ?

Javadoc не ясно по этому вопросу.

Ответы [ 6 ]

4 голосов
/ 15 сентября 2008

По моему опыту, да. Спецификация DOM не совсем понятна. Если вы параноик, попробуйте что-то вроде

current = node.firstChild;
while(null != current) {
    ...
    current = current.nextSibling;
}
2 голосов
/ 15 сентября 2008

Мой опыт показывает, что каждый раз, когда я пытался посмотреть, это было в порядке документов. Тем не менее, я считаю, что я где-то читал, что не гарантируется порядок документов. Я не могу найти, где я читаю это прямо сейчас, так что воспринимайте это как слухи. Я думаю, что ваша лучшая ставка, если вы должны иметь их в порядке следования документов, будет использовать FirstChild, а затем NextSibling до тех пор, пока больше не будет сибсов.

2 голосов
/ 15 сентября 2008

Упорядоченный документом список узлов - это поведение в других реализациях DOM, таких как Javascript или Python. И случайно упорядоченный список узлов был бы совершенно бесполезен. Я думаю, что безопасно полагаться на узлы, возвращаемые в порядке документа.

0 голосов
/ 28 ноября 2010

Да, они упорядочены, так как он возвращает nodeList, вы должны будете сказать getNamedChildNodes, чтобы получить список, который не упорядочен как в namedNodeList.

0 голосов
/ 15 сентября 2008

В вашем примере, как представлено. Я так считаю. Тем не менее, я испытал реальный опыт, когда пространства интерпретировались как узлы так:

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

отличается от

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

Если вы смотрите на индекс [1], Firefox и IE могут показывать разные результаты. Я бы посоветовал не полагаться на заказ в зависимости от ваших потребностей.

0 голосов
/ 15 сентября 2008

Я бы хотел сказать вам, что это гарантировано (как я полагаю), но сама спецификация Модель объекта документа *1001* в этом случае кажется неоднозначной. Я почти уверен, что это всегда порядок документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...