Różnice w przeglądarkach XML DOM

Różne przeglądarki traktują węzły tekstowe w XML DOM w różny sposób.

Przykład

Poniższy przykład używa pliku XML books.xml.

Funkcja loadXMLDoc()Funkcja, znajdująca się w zewnętrznym JavaScriptie, używana do ładowania plików XML.

W IE i innych przeglądarkach wynik jest inny.
Wyświetlenie długości listy węzłów
Zignoruj puste węzły między węzłami
W tym przykładzie sprawdzany jest nodeType węzła, a tylko węzły elementowe są przetwarzane.

Różnice między przeglądarkami w analizie DOM

Wszystkie współczesne przeglądarki wspierają specyfikację W3C DOM.

Jednak różnice między przeglądarkami są istotne. Kluczowe różnice obejmują dwa punkty:

  • Metody ładowania XML
  • Sposoby przetwarzania białych znaków i wierszy

w "Analiza XML DOM” To rozdział wyjaśnia różne metody ładowania XML.

W tym rozdziale omówimy różne sposoby przetwarzania białych znaków i wierszy.

DOM - białe znaki i wiersze

XML często zawiera wiersze lub białe znaki między węzłami. To jest często spotykane przy użyciu prostych edytorów (np. Notatnika).

Poniższy przykład (edytowany w Notatniku) zawiera CR/LF między wierszami oraz dwa spacje przed każdym podwęzłem:

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

Firefox oraz inne przeglądarki traktują puste białe przestrzenie lub wiersze jako węzły tekstowe, podczas gdy Internet Explorer nie robi tego.

Poniższy fragment kodu pokazuje, ile podwęzłów ma korzeń (books.xml):

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Liczba podwęzłów: " + x.length);

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Pobierz podwęzły elementu korzenia
  • Wyświetl liczbę podwęzłów

Wynik zależy od używanego przeglądarki. Firefox wyświetla 9, a IE wyświetla 4.

TIY

Zignoruj puste węzły między węzłami

Aby zignorować puste węzły tekstowe między węzłami elementu, należy sprawdzić typ węzła. Typ węzła elementu to 1:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// przetwarzaj tylko węzły elementu 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Przykład wyjaśnienia:

  • Przy użyciu loadXMLDoc() Wprowadź "books.xml"Wczytaj do xmlDoc"
  • Pobierz podwęzły elementu korzenia
  • Sprawdź typ węzła każdego podwęzła. Jeśli typ węzła to "1", to jest to węzeł elementu

TIY (prosty) lub TIY (pełny)