Ir para conteúdo

POWERED BY:

Arquivado

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

Freelife

[Resolvido] Acessar nó xml pelo atributo id

Recommended Posts

Boa tarde galera...

 

 

existe alguma forma de acessar o nó xml e os filhos pelo id do nó pai?

 

ex: Nessse xml buscar os nós filhos do nó pai id 50;

 

<node_pai id="50">

<childNode>

<child>1</child>

<child>2</child>

</childNode>

</node_pai>

 

Jà postei na parte de xml mas não obtive respostas...

 

Estou usado DOM javascrpt para acessar o conteúdo dos nós e está dando certo até um certo ponto que é justamente buscar a informação pelo nó específico.

 

Anteriormente eu estava fazendo assim:

 

 

<node_pai_50>

<childNode>

<child>1</child>

<child>2</child>

</childNode>

</node_pai_50>

 

Ou seja estava criando nós diferentes com o id no final, porém, pelo que pude ler, isso não é certo né?!

 

Se alguém souber como ajudar...

 

Att.

Freelife

 

Adendo...

 

Pergunta: é errado dentro de um nó pai você ter nós filhos com nome diferente como no exemplo abaixo?

 

<node_pai>

<node_filho_1>

<child>1</child>

<child>2</child>

</node_filho_1>

 

<node_filho_2>

<child>1</child>

<child>2</child>

</node_filho_2>

</node_pai>

 

Att.

Freelife

Compartilhar este post


Link para o post
Compartilhar em outros sites

Freelife, não é errado, apenas não é uma boa prática

 

Porém você pode construir seu xml da seguinte forma também:

<node_pai>
<node_filho>
<id>1</id>
<child>1</child>
<child>2</child>
</node_filho>
<node_filho>
<id>2</id>
<child>1</child>
<child>2</child>
</node_filho>
</node_pai>

 

Sobre como recuperar a informação da maneira que você quer, você teria de criar um for do tipo(para retornar o nodo com id 50):

var nodes = node.getElementsByTagName("filho");
for(var i=0; i<nodes.length; i++) {
 if(nodes[i].getAttribute("id")=="50") {
 	return node;
 }
}

Não sei se getAttribute funciona nesse caso, nunca manipulei atributo de xml com javascript sem utilizar frameworks(eu sempre utilizei pegando valores de nodos, e não atributos).

Mas se você utiliza algum framework como o jquery por exemplo fica bem mais fácil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite galera...

 

Meu agradecimento ao brunocampos_. Com sua dica consegui fazer o que precisava.

 

Ficou assim o loop:

 

for(var i=0; i<nodes.length; i++) { 
										
					//o id do nó é atribuido à varável. attributes[1] é um array,  
                                        //com 1 acessamos o segundo atributo do nó.
					idNode = nodes.item(i).attributes[1].value;
					//alert(idNode);
					//se o id do nó for igual ao id clicado...
					if(idNode == id) {
						
						//os elementos recebem o conteúdo.
						title.innerHTML = nodes[i].childNodes[0].childNodes[0].nodeValue;
						content.innerHTML = nodes[i].childNodes[1].childNodes[0].nodeValue;
					}
				}

 

Novamente, obrigado brunocampos_ pela ajuda.

 

Obrigado a todos.

 

Att.

Freelife

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.