Diferenças de Navegador XML DOM

Os navegadores lidam de maneiras diferentes com nós de texto em branco no XML DOM.

Exemplo

O exemplo a seguir usa arquivo XML books.xml.

Função loadXMLDoc()Localizado no JavaScript externo, usado para carregar arquivos XML.

Mostrar comprimento da lista de nós
Este exemplo mostra o comprimento da lista de nós. No IE e outros navegadores, os resultados são diferentes.
Ignorar nós de texto em branco entre nós
Este exemplo verifica o nodeType do nó e apenas lida com nós de elemento.

Diferenças de navegadores no processamento DOM

Todos os navegadores modernos suportam o padrão W3C DOM.

No entanto, há diferenças entre navegadores. As diferenças importantes são duas:

  • Maneiras de carregar XML
  • Maneiras de lidar com espaços em branco e quebras de linha

Em “Análise XML DOM” Esta seção já explicou diferentes maneiras de carregar XML.

Nesta seção, explicaremos diferentes maneiras de lidar com espaços em branco e quebras de linha.

DOM - Espaços em branco e quebras de linha

O XML geralmente contém quebras de linha ou caracteres de espaço entre nós. Isso é comum ao usar editores simples (como o Bloco de Notas).

Os exemplos a seguir (editados no Bloco de Notas) contêm CR/LF entre as linhas e dois espaços antes de cada sub-nó:

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

Firefox, outros navegadores e alguns tratam espaços em branco ou quebras de linha em branco como nós de texto, enquanto o Internet Explorer não faz isso.

O trecho de código a seguir mostra quantos nós filhos possui o nó raiz (do books.xml):

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Número de nós filhos: " + x.length);

Exemplo de explicação:

  • Ao usar loadXMLDoc() Coloque "books.xml"Carregar em xmlDoc"
  • Obtenha os filhos do nó raiz
  • Número de filhos de saída

Os resultados dependem do navegador utilizado. Firefox sai com 9, enquanto o IE sai com 4.

TIY

Ignorar nós de texto em branco entre nós

Para ignorar os nós de texto em branco entre os nós de elemento, é necessário verificar o tipo de nó. O tipo de nó do elemento é 1:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// apenas processar nós de elemento 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Exemplo de explicação:

  • Ao usar loadXMLDoc() Coloque "books.xml"Carregar em xmlDoc"
  • Obtenha os filhos do nó raiz
  • Verifique o tipo de nó de cada subnó.

TIY (simplificado) ou TIY (completo)