Pergunta

O método de DOM getChildNodes() retorna um NodeList dos filhos do atual Node.Enquanto um NodeList é ordenado, é a lista de garantias de ordem do documento?

Por exemplo, dada a <a><b/><c/><d/></a> é a.getChildNodes() garante o retorno de um NodeList com b, c e d em que ordem?

O javadoc não é claro isto.

Foi útil?

Solução

Na minha experiência, sim.O DOM spec não é, com toda a clareza.Se você é paranóico, tente algo como

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

Outras dicas

Um documento-ordenou nó da lista é o comportamento em outras implementações do DOM, como Javascript ou Python.E um aleatoriamente ordenados nó de lista seria totalmente inútil.Eu acho que é seguro depende de nós ser devolvidos em ordem do documento.

A minha experiência é que cada vez que eu teria incomodado a olhar tem sido na ordem do documento.No entanto, eu acredito que eu li em algum lugar que não é garantido que esteja na ordem do documento.Eu não consigo encontrar onde eu li que agora, de modo a tomá-lo como boatos.Eu acho que a sua melhor aposta se você deve tê-los em ordem do documento seria a utilização de FirstChild, em seguida, NextSibling até que não haja mais sibs.

Eu adoraria dizer a vocês que isto é garantido (como acredito que seja), mas o Modelo de Objeto de documento de especificação em si parece ambígua, neste caso.Eu tenho certeza de que é sempre de documento de ordem, no entanto.

No seu exemplo, como apresentado.Eu acredito que sim.No entanto, eu tenho vivido experiências do mundo real onde os espaços foram interpretadas como nós assim:


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

é diferente


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

se você está olhando para o índice [1], o firefox e o IE podem apresentar diferentes resultados.Gostaria de aconselhar contra a confiar no fim, dependendo de sua necessidade.

Sim, eles são ordenados como ele retorna um nodeList, você teria que dizer getNamedChildNodes para obter uma lista não ordenada, como em namedNodeList.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top