Bom dia pessoal,
Estou tentando ler os dados de um xml usando o laço “for” mas sem sucesso, sempre os childs me retornam null.
Já tentei de diversas maneiras e sem sucesso.
Só pego um valor mas não to conseguindo pegar todos , acho que childNodes[i] ta me confundindo, levando e resultados null ou object.
Onde posso estar errando, vejam meu codigo.
Meu xml:
<?xml version="1.0" encoding="UTF-8"?>
<banda>
<nome>Angra</nome>
<integrantes>
<musico id="musico0">
<nome>Daniel dos Santos</nome>
</musico>
<musico id="musico1">
<nome>Eduardo Falaschi</nome>
</musico>
<musico id="musico2">
<nome>Felipe Andreoli</nome>
</musico>
<musico id="musico3">
<nome>Kiko Loureiro</nome>
</musico>
<musico id="musico4">
<nome>Rafael Bittencourt</nome>
</musico>
<musico id="musico5">
<nome>Ricardo Confessori</nome>
</musico>
</integrantes>
<discografia>
<album id="album0">
<nome>(1993) Angels Cry</nome>
</album>
<album id="album1">
<nome>(1996) Holy Land</nome>
</album>
<album id="album2">
<nome>(1998) Fireworks</nome>
</album>
<album id="album3">
<nome>(2001) Rebirth</nome>
</album>
<album id="album4">
<nome>(2004) Temple of Shadows</nome>
</album>
<album id="album5">
<nome>(2006) Aurora Consurgens</nome>
</album>
</discografia>
</banda>
Meu script:
function carregarInfo( banda ) {
/* criar objeto XMLHttpRequest */
xmlHttp = getXmlHttpRequest();
/* endereço do servidor */
url_servidor = "";
/* arquivo que gera o XML*/
url = url_servidor + "xml.php";
/* número aleatório para evitar cache */
url = url + "?id=" + Math.random();
/* abrir objeto informando método http e adicionando a informação da banda */
xmlHttp.open( "GET", url + "&banda=" + banda , true);
/* definir função a ser chamada quando o XML estiver carregado */
xmlHttp.onreadystatechange = xmlPronto;
/* enviar dados */
xmlHttp.send("");
/* mostrar animação de carregando */
document.getElementById( 'titulo_info' ).innerHTML = '<img src="loader.gif">';
}
function xmlPronto() {
if ( xmlHttp.readyState == 4 ) {
/* carregar objeto DOM */
window.alert( xmlHttp.responseText );
xml = getXmlDoc( xmlHttp.responseText );
/* adquirindo o elemento banda */
banda = xml.getElementsByTagName( "banda" )[0];
//window.alert(inte.childNodes[5].childNodes[1].childNodes[0].nodeValue);
//document.write(xmlMicoxArvore(xml," "));
nome = banda.childNodes[1].childNodes[0].nodeValue;
inte = banda.getElementsByTagName( "integrantes" )[0].childNodes;
var z = inte.length;
function dump(inte) {
var out = '';
for (var i in obj) {
out += i + ": " + obj[i] + "\n";
}
window.alert(out);
for (var i=0;i<z;i++){
a += inte[i].childNodes[0].nodeValue;
}
window.alert a;
musico = banda.getElementsByTagName( "integrantes" )[0].childNodes[5].childNodes[1].childNodes[0].nodeValue; // veja que aqui so pego um valor mas não to conseguindo pegar todos , acho que childNodes[i] ta me confundindo , levando e resultados não desejados
album = banda.getElementsByTagName( "discografia" )[0].childNodes[7].childNodes[1].childNodes[0].nodeValue; //aqui tb mesma coisa
document.getElementById( 'nome' ).innerHTML = nome;
document.getElementById( 'integrantes' ).innerHTML = musico;
document.getElementById( 'discografia' ).innerHTML = album;
document.getElementById( 'titulo_info' ).innerHTML = '<b><i>info</i></b>';
}
}
Vejam se podem me ajudar.
Até…
