Análise XML DOM
- Página anterior Árvore de nós DOM
- Próxima página Carregamento 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.
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>
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>
Observação:O Internet Explorer usa o método loadXML() para analisar strings XML, enquanto outros navegadores usam Objeto DOMParser.
- Página anterior Árvore de nós DOM
- Próxima página Carregamento DOM