Leitura de XML com JS
Olá, tudo bem?
Estou com uma dúvida que é relativamente simples, porém eu nunca fiz este tipo de coisa então estou com dificuldade. Eu preciso ler um XML que é enviado para o meu script através de uma URL e os dados dele mudam a cada 2 minutos (em média), no caso eu pensei em fazer utilizando Ajax assim posso puxar o XML sem recarregar a página do usuário (a origem do XML é um subdominio do site que roda o script).
Encontrei durante minhas pesquisas na internet uma solução: esta aqui funcionou legal, porém é para um XML simples o meu tem diversos "nodes" então não sei como adaptar.
Este aqui é o XML que é mostrado no exemplo:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<valor>
valor do xml
</valor>
O XML que eu preciso ler é este aqui:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<Pulsar>
<OnAir>
<song>
<singer>GUSTTAVO LIMA</singer>
<song>APELIDO CARINHOSO</song>
</song>
<OnAir>
</Pulsar>
O código JS que lê é este aqui:
var http_request;
var obj;
var tpBrowser;
if(window.XMLHttpRequest) {
tpBrowser = 'ns';
http_request = new XMLHttpRequest();
if(http_request.overrideMimeType)
http_request.overrideMimeType('text/xml');
}
else if (window.ActiveXObject) {
tpBrowser = 'ie';
try { http_request = new ActiveXObject("Msxm12.XMLHTTP");}
catch (e) {
try {http_request = new ActiveXObject("Microsoft.XMLHTTP");}
catch (e) {}
}
}
function obterRequisicao(pagina, elemento) {
obj = document.getElementById(elemento);
if(http_request==null) {
alert('Não foi possivel instanciar XMLHTTPRequest');
return false;
}
http_request.onreadystatechange = mostrarConteudo;
http_request.open('GET', pagina, true);
http_request.send(null);
}
function mostrarConteudo() {
if(http_request.readyState == 4) {
var xmldoc = http_request.responseXML;
var no = xmldoc.getElementsByTagName('pulsar').item(0);
var valor = no.firstChild.data;
if (tpBrowser=='ns') obj.textContent = valor;
else if (tpBrowser=='ie') obj.innerText = valor;
}
else alert('falha ao fazer a requisição de dados');
}
E printa no meu HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script language="javascript" src="meuscript.js"></script>
</head>
<body>
<span style="cursor: pointer; text-decoration: underline;" onclick="obterRequisicao('metro.xml','resultado');">Clique aqui para ler o arquivo xml</span>
<br><br>
Resultado:
<div id="resultado"></div>
</body>
</html>
Esta funcionando perfeito, só não consigo ler o meu porque ele tem diversos nodes, não sei bem como fazer.
Você poderia me ajudar??
Valeu :DDiscussão (1)
Carregando comentários...