Domanda

Il metodo DOM getChildNodes() restituisce a NodeList dei figli della corrente Node.Mentre a NodeList è ordinato, è garantito che l'elenco sia nell'ordine dei documenti?

Ad esempio, dato <a><b/><c/><d/></a> È a.getChildNodes() garantito per restituire a NodeList con b, c E d in questo ordine?

IL javadoc non è chiaro su questo.

È stato utile?

Soluzione

Nella mia esperienza, sì.IL Specifica DOM non è più chiaroSe sei paranoico, prova qualcosa del genere

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

Altri suggerimenti

Un elenco di nodi ordinato per documenti è il comportamento in altre implementazioni del DOM, come Javascript o Python.E un elenco di nodi ordinato in modo casuale sarebbe assolutamente inutile.Penso che sia sicuro dipendere dal fatto che i nodi vengano restituiti nell'ordine dei documenti.

La mia esperienza è che ogni volta che mi sono preso la briga di guardare, i documenti erano in ordine.Tuttavia, credo di aver letto da qualche parte che non è garantito che sia nell'ordine dei documenti.Non riesco a trovare dove l'ho letto in questo momento, quindi prendilo per sentito dire.Penso che la soluzione migliore se tu dovere averli nell'ordine dei documenti significherebbe usare FirstChild e poi NextSibling finché non ci saranno più fratelli.

Mi piacerebbe dirti che questo è garantito (come credo che sia) ma il Specifica del modello oggetto del documento stessa sembra ambigua in questo caso.Sono abbastanza sicuro che sia sempre in ordine di documenti, però.

Nel tuo esempio, come presentato.Credo di sì.Tuttavia, ho sperimentato esperienze nel mondo reale in cui gli spazi sono stati interpretati come nodi, quindi:


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

è diverso da


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

se stai guardando l'indice [1], Firefox e IE potrebbero presentare risultati diversi.Sconsiglio di affidarsi all'ordine in base alla propria esigenza.

Sì, sono ordinati poiché restituisce un nodeList, dovresti dire getNamedChildNodes per ottenere un elenco che non è ordinato come in NamedNodeList.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top