Differenze tra Browser XML DOM

I browser trattano i nodi di testo vuoti in modo diverso nel DOM XML.

Esempio

Esempio seguente utilizza file XML books.xml.

Funzione loadXMLDoc(), situata all'esterno del JavaScript, utilizzata per caricare file XML.

Mostra la lunghezza della lista dei nodi
Questo esempio mostra la lunghezza di una lista di nodi. Ne IE e negli altri browser i risultati sono diversi.
Ignora i nodi di testo vuoti tra i nodi
Questo esempio verifica il nodeType del nodo e gestisce solo i nodi element.

Differenze tra i browser nella解析 del DOM

Tutti i browser moderni supportano la specifica W3C DOM.

Tuttavia, ci sono differenze tra i browser. Le differenze importanti sono due:

  • Modi di caricamento dell'XML
  • Modi di gestione degli spazi bianchi e dei newline

In "Analisi XML DOMIn questa sezione, è stata spiegata la diversa modalità di caricamento dell'XML.

In questa sezione, spiegheremo diversi modi di gestire gli spazi bianchi e i newline.

DOM - Spazi bianchi e newline

L'XML contiene spesso newline o spazi bianchi tra i nodi. Questo è un problema comune quando si utilizza un editor semplice (ad esempio, Notepad).

Esempio seguente (modificato con Notepad) contiene CR/LF tra le righe e due spazi prima di ogni sotto-nodo:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Firefox e altri browser gestiscono gli spazi bianchi vuoti o i salti di riga come nodi di testo, mentre Internet Explorer non lo fa.

Il seguente frammento di codice mostra quanti sotto-nodi ha l'elemento radice (di books.xml):

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Number of child nodes: " + x.length);

Esempio di spiegazione:

  • Utilizzando loadXMLDoc() Aggiungi "books.xml" Carica in xmlDoc "
  • Ottieni i figli del nodo radice
  • Output numero di sotto-nodi

I risultati dipendono dal browser utilizzato. Firefox esce con 9, mentre IE esce con 4.

TIY

Ignora i nodi di testo vuoti tra i nodi

Per ignorare i nodi di testo vuoti tra i nodi elemento, è necessario controllare il tipo di nodo. Il tipo di nodo degli elementi è 1:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// elabora solo i nodi elemento 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Esempio di spiegazione:

  • Utilizzando loadXMLDoc() Aggiungi "books.xml" Carica in xmlDoc "
  • Ottieni i figli del nodo radice
  • Controlla il tipo di nodo di ogni sotto-nodo. Se il tipo di nodo è "1", è un nodo elemento

TIY (Semplice) O TIY (Completo)