Pregunta

El método DOM getChildNodes() devuelve un NodeList de los hijos de la actual Node.Mientras que un NodeList es ordenado, es la lista garantizados para estar en el orden de los documentos?

Por ejemplo, dada <a><b/><c/><d/></a> es a.getChildNodes() garantizado para devolver un NodeList con b, c y d en ese orden?

El javadoc no está claro en este sentido.

¿Fue útil?

Solución

En mi experiencia, sí.El DOM spec no más claro.Si usted es paranoico, intente algo como

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

Otros consejos

Un documento ordenado nodo de la lista es el comportamiento en otras implementaciones de la DOM, tales como Javascript o Python.Y al azar-ordenó nodo de la lista serían completamente inútiles.Creo que es seguro depender de nodos que se devuelve en el orden del documento.

Mi experiencia es que cada vez que me he molestado en buscar lo ha sido en el orden del documento.Sin embargo, creo que leí en alguna parte que no está garantizado a estar en el orden del documento.No puedo encontrar donde leí que ahora, así que tomarlo como un rumor.Creo que su mejor apuesta si usted debe tienen ellos en el orden del documento sería el uso de FirstChild, a continuación, NextSibling hasta que no hay más sib.

Me encantaría decirles que esto está garantizado (como creo que lo es) pero el Modelo de Objetos de documento de especificación de sí parece ambigua en este caso.Estoy bastante seguro de que es siempre el documento de orden, aunque.

En tu ejemplo, como se presenta.Yo lo creo.Sin embargo, he experimentado las experiencias del mundo real donde los espacios se han interpretado como nodos para:


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

es diferente


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

si usted está buscando en el índice [1], firefox y IE puede presentar resultados diferentes.Yo aconsejo que confiar en el orden en función de su necesidad.

Sí que están ordenados como se devuelve una lista de nodos, habría que decir getNamedChildNodes para obtener una lista que no está ordenado como en namedNodeList.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top