Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tanem

[Resolvido] Nome do primeiro "nó filho" XML com Javascrip

Recommended Posts

Galera,

 

Preciso de pegar o nome da primeira tag, que vem logo após a principal.

Tenho o script funcionando ( inclusive que achei imasters).

 

Vocês vão lembrar desse código, segue:

 

function processaXML(obj){

  
		  
                  //pega a tag cidade
                  var dataArray   = obj.getElementsByTagName("cidade");
		  
		  //total de elementos contidos na tag cidade
		  if(dataArray.length > 0) {
			 //percorre o arquivo XML paara extrair os dados
			 for(var i = 0 ; i < dataArray.length ; i++) {
				var item = dataArray[i];
				
				//contéudo dos campos no arquivo XML
				var codigo    =  item.getElementsByTagName("codcidade")[0].firstChild.nodeValue;
				var descricao =  item.getElementsByTagName("nmcidade")[0].firstChild.nodeValue;
				
				idOpcao.innerHTML = "--Selecione uma das opções abaixo--";
				
				//cria um novo option dinamicamente  
				var novo = document.createElement("option");
					//atribui um ID a esse elemento
					novo.setAttribute("id", "opcoes");
					//atribui um valor
					novo.value = codigo;
					//atribui um texto
					novo.text  = descricao;
					//finalmente adiciona o novo elemento
					document.forms[0].listCidades.options.add(novo);
			 }
		  }

Onde eu coloco o nome da tag "cidade", nesse trecho do código:

//pega a tag cidade
                  var dataArray   = obj.getElementsByTagName("cidade");

Eu preciso de pegar o nome da primeira tag do meu xml, segue meu xml.

<?xml version="1.0" encoding="ISO-8859-1"?>
<dados>
   <cidade>
      <codcidade>4</codcidade>
      <nmcidade>Santo André</nmcidade>
   </cidade>
   <cidade>
      <codcidade>3</codcidade>
      <nmcidade>São Paulo</nmcidade>
   </cidade>
</dados>

Então, gostaria de declarar a tag "dados", que sempre sera a mesma em todos os meus xml, e o javascript pega a tag logo abaixo( que nesse caso é "cidade"), com base na tag "dados", que é a pai do xml.

 

Alguem sabe como pegar o nome dessa primeiro filho , tendo a tag principal ( nesse caso é dados).

 

Valeu galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui pegar, porem só esta funciondo no IE!

segue o código abaixo:

 

primeirofilho = obj.getElementsByTagName("dados")[0].firstChild.nodeName;
	  		  
                   alert(primeirofilho);
		  //pega a tag cidade
		  var dataArray   = obj.getElementsByTagName(primeirofilho);

NO firefox aparece a seguinte mensagem: "#text".

 

Como pegar no firefox??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para o firefox (e outros navegadors que não o IE), espaços e ENTERs que têm escritos antes de qualquer nó xml também são nós. São identificados como TEXTNODE.

 

Então, resumindo, você terá que pegar o segundo filho.

 

Deve ficar algo como:

 

se IE:

obj.getElementsByTagName("dados")[0].firstChild

 

se não IE:

obj.getElementsByTagName("dados")[0].childNodes[1]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.