Análise XML DOM

A maioria dos navegadores têm analisadores XML integrados para leitura e operação de XML.

O analisador converte XML em objeto acessível pelo JavaScript.

Exemplo

Os exemplos fornecidos pelo CodeW3C.com são independentes de navegador e plataforma. Esses exemplos podem ser executados em todos os navegadores modernos.

Carregar e analisar arquivo XML
Carregar e analisar string XML

Analisar XML

Todos os navegadores modernos têm analisadores XML integrados para leitura e operação de XML.

O analisador lê XML para a memória e o converte em objeto XML DOM acessível pelo JavaScript.

O analisador XML do Microsoft difere dos analisadores de outros navegadores. O analisador do Microsoft suporta a carga de arquivos XML e strings XML (texto), enquanto outros navegadores usam analisadores separados. No entanto, todos os analisadores contêm funções para percorrer a árvore XML, acessar, inserir e excluir nós.

Neste tutorial, explicaremos como criar scripts que funcionem no IE e em outros navegadores.

Carregando XML através do analisador XML do Microsoft

O analisador XML do Microsoft está integrado ao Internet Explorer 5 e versões mais recentes.

O seguinte trecho de JavaScript carrega o documento XML ("books.xml") carrega no analisador:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

Explicação do código:

  • A primeira linha cria um objeto de documento XML do Microsoft vazio
  • A segunda linha desativa o carregamento assíncrono, garantindo que o analisador não continue a executar o script antes de que o documento esteja completamente carregado
  • A terceira linha informa ao analisador que carregar o documento nomeado "books.xml"

O seguinte trecho de JavaScript carrega a string nomeada txt no analisador:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

Observação:loadXML() O método é usado para carregar strings (texto), enquanto load() Usado para carregar arquivos.

O analisador XML no Firefox e outros navegadores

O seguinte trecho de JavaScript carrega o documento XML ("books.xml") carrega no analisador:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

Explicação do código:

  • A primeira linha cria um objeto de documento XML vazio
  • A segunda linha desativa o carregamento assíncrono, garantindo que o analisador não continue a executar o script antes de que o documento esteja completamente carregado
  • A terceira linha informa ao analisador que carregar o documento nomeado "books.xml"

O seguinte trecho de JavaScript carrega a string nomeada txt no analisador:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

Explicação do código:

  • A primeira linha cria um objeto de documento XML vazio
  • A segunda linha informa ao analisador que carregar a string nomeada txt

Observação:Internet Explorer usa loadXML() método para analisar strings XML, enquanto outros navegadores usam DOMParser objeto.

Análise de arquivo XML - um exemplo cross-browser

O exemplo a seguir carrega um documento XML ("books.xml") carrega o analisador XML:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

Erro: Acesso Across Domains

Por razões de segurança, os navegadores modernos não permitem acesso cross-domain.

Isso significa que o site e o arquivo XML que ele tenta carregar devem estar no mesmo servidor.

O arquivo XML aberto pelo exemplo no CodeW3C.com está no domínio do CodeW3C.com.

Se você pretende usar o exemplo acima em seu próprio site, é necessário hospedar o arquivo XML em seu servidor. Caso contrário, xmlDoc.load() gerará o erro "Acesso negado".

Análise de string XML - um exemplo cross-browser

O código a seguir carrega e analisa uma string XML:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

Observação:O Internet Explorer usa o método loadXML() para analisar strings XML, enquanto outros navegadores usam Objeto DOMParser.