Ler childs de um XML

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é…

O que exatamente você quer extrair daí?

Disso aqui:

<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>  

Quero uma string assim:
Integrantes: Daniel dos Santos, Eduardo Falaschi, Felipe Andreoli, Kiko Loureiro, Rafael Bittencourt, Ricardo Confessori.
Mesma coisa de discos…
Discos: (1993) Angels Cry, etc…

Até…

Bom, vou te passar o código porque eu já tinha pronto aqui. Você só precisa passar pra pegar o seu XML[code] public static void main(String[] args) throws Exception{

	String expressao = "/banda/integrantes/musico";
	XPath xPath = XPathFactory.newInstance().newXPath();
	InputStream streamCatalogo = Main.class.getResourceAsStream("xml.xml");
	Transformer transformer = TransformerFactory.newInstance().newTransformer();
	StreamSource source = new StreamSource(streamCatalogo);
	DOMResult result = new DOMResult();
	transformer.transform(source, result);
	Node document = result.getNode();

	NodeList nodeList = (NodeList) xPath.evaluate(expressao, document, XPathConstants.NODESET);
	StringBuilder integrantes = new StringBuilder("Integrantes: ");
	for (int i = 0; i < nodeList.getLength(); i++){
		Node node = nodeList.item(i);
		integrantes.append(node.getTextContent().trim() + ", ");
	}
	
	integrantes.delete(integrantes.length()-2, integrantes.length());
	
	System.out.println(integrantes.toString());
}[/code]Eu sugiro que dê uma pesquisada nas classes sendo utilizadas aí, porque senão vai ter um trabalhão se precisar manter o código.

Obrigado pela ajuda Rodrigo Sasaki, mas precisava em javascript.

Nossa, viajei. Desculpa :slight_smile:

Bom, como JavaScript não é minha área vou deixar alguém mais qualificado te ajudar!

Abraço!