Ir para conteúdo

POWERED BY:

Arquivado

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

interlokk

extrair dados de xml pelo nome do nodo e não pela posição

Recommended Posts

No arquivo XML:

<?xml version='1.0' encoding='UTF-8'?>
<rsp stat='ok'>
<profile>
<displayName>XXXX</displayName>
<email>XXX@XXX.COM</email>
<identifier>XXXXX</identifier>
<preferredUsername>XXXXX</preferredUsername>
<providerName>XXXX</providerName>
<verifiedEmail>XXX@XXX.COM</verifiedEmail>
</profile>
</rsp>

Com eu posso decompor os valores dos nodos com base em seu nome (displayName, email, identifier...) e nao pela posição?

 

Alguma dica gente:

 

Estou usando essa função que me retorna valores errados pois os pega pela ordem em que aparecem na xml, aí acabo inserindo valores nos campos errados do bd...

 

 

set xmlNode = xmlRss.getElementsByTagName("profile")
	for i = 0 to xmlNode.length-1
		displayName = xmlNode.item(i).childNodes.item(0).text ' pega o valor no primeiro nodo de informacoes
		email = xmlNode.item(i).childNodes.item(1).text ' pega o valor no segundo nodo de informacoes
		identifier = xmlNode.item(i).childNodes.item(2).text ' pega o valor no terceiro nodo de informacoes
		preferredUsername = xmlNode.item(i).childNodes.item(3).text ' pega o valor no quarto nodo de informacoes
		providerName = xmlNode.item(i).childNodes.item(4).text ' pega o valor no quinto nodo de informacoes
		verifiedEmail = xmlNode.item(i).childNodes.item(5).text ' pega o valor no sexto nodo de informacoes
		openid = "True"
	next

Como posso pegar cada nodo pelo nome? Qualquer dica sera valida. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a dificuldade de pegar pelo nodo? Pq está vindo errado? Os nodos não estão em sequencia padrão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então os nodos estão vindo de diferentes arquivos xml e cada um coloca o valor numa posição diferente, aí quando vou pegar o email vem o identifier, ou quando vou pegar o providername vem o preferredusername, p. ex.

 

Eu tentei usar uma função similar a esta:

 

 

set xmlNode = xmlRss.selectNodes("profile")
	for each Node in xmlNode
		displayName = Node.selectSingleNode("displayName").text  ' pega o valor no primeiro nodo de informacoes
		email = Node.selectSingleNode("email").text ' pega o valor no segundo nodo de informacoes
		identifier = Node.selectSingleNode("identifier").text  ' pega o valor no terceiro nodo de informacoes
		preferredUsername = Node.selectSingleNode("preferredUsername").text  ' pega o valor no quarto nodo de informacoes
		providerName = Node.selectSingleNode("providerName").text  ' pega o valor no quinto nodo de informacoes
		verifiedEmail = Node.selectSingleNode("verifiedEmail").text  ' pega o valor no sexto nodo de informacoes

	next

não dá erro, mas nada é colocado no bd...alguma dica??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou com // ?

 

Ex.

displayName = Node.selectSingleNode("//displayName").text

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.