Diferencias de navegador XML DOM
- Página anterior Recorrido de nodos DOM
- Página siguiente Nodo DOM de ubicación
Los navegadores manejan de manera diferente la forma en que procesan los nodos de texto vacíos en el DOM XML.
Ejemplo
El siguiente ejemplo utiliza archivos XML books.xml.
Función loadXMLDoc(),ubicado en JavaScript externo, se utiliza para cargar archivos XML.
- Mostrar la longitud de la lista de nodos
- Este ejemplo muestra la longitud de una lista de nodos. En IE y otros navegadores, los resultados son diferentes.
- Ignorar nodos de texto entre nodos
- Este ejemplo verifica el nodeType del nodo y solo maneja nodos de elemento.
Diferencias de navegadores en la análisis DOM
Todos los navegadores modernos admiten el estándar W3C DOM.
Sin embargo, hay diferencias entre navegadores. Las diferencias importantes son dos:
- Carga de XML
- Manejo de espacios en blanco y saltos de línea
En “Análisis de XML DOM” Esta sección ya ha explicado diferentes formas de cargar XML.
En esta sección, explicaremos diferentes formas de manejar los espacios en blanco y los saltos de línea.
DOM - Espacios en blanco y saltos de línea
XML a menudo contiene saltos de línea o caracteres de espacio entre nodos. Esto es un caso común al usar editores simples (como Bloc de notas).
El siguiente ejemplo (editado con Bloc de notas) contiene CR/LF entre cada línea y dos espacios antes de cada subnodo:
<book> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
Firefox y otros navegadores web manejan los espacios en blanco o saltos de línea vacíos como nodos de texto, mientras que Internet Explorer no hace lo mismo.
El siguiente fragmento de código muestra cuántos nodos hijos tiene el elemento raíz (de books.xml):
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; document.write("Número de nodos hijos: " + x.length);
Ejemplo explicativo:
- Al usar loadXMLDoc() Colocar "books.xml"Cargar xmlDoc"
- Obtener los nodos hijos del elemento raíz
- Número de nodos hijos
Los resultados dependen del navegador utilizado. Firefox muestra 9, mientras que IE muestra 4.
Ignorar nodos de texto entre nodos
Para ignorar los nodos de texto vacíos entre los nodos de elemento, es necesario verificar el tipo de nodo. El tipo de nodo de los elementos es 1:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {// solo procesar nodos de elemento document.write(x[i].nodeName); document.write("<br />"); } }
Ejemplo explicativo:
- Al usar loadXMLDoc() Colocar "books.xml"Cargar xmlDoc"
- Obtener los nodos hijos del elemento raíz
- Verificar el tipo de nodo de cada subnodo. Si el tipo de nodo es "1", es un nodo de elemento
- Página anterior Recorrido de nodos DOM
- Página siguiente Nodo DOM de ubicación