Ir para conteúdo

Arquivado

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

FabianoSouza

Ler parâmetros de tags XML

Recommended Posts

Preciso de duas ajudas.

 

1) Desconfio que a estrutura abaixo do meu XML não está muito lógica. Pois acho que um "atributo" não deve ser tratato como registro.

 

Vejam este trecho do meu arquivo XML atual

 

<modulo>Desenvolvimento Organizacional</modulo>
<codigo_modulo>1</codigo_modulo>

 

Acho que o correto seria assim.

<modulo codigo="1">Desenvolvimento Organizacional</modulo>

 

Pois codigo_modulo é um atributo de módulo.

Estou com a lógica correta??

 

 

2) Se sim, o próximo passo é a leitura do arquivo XML pelo ASP.

Meu arquivo XML atualmente tem esta estrutura e é lido sem problemas.

 

<ComponentesASP>
<permissoes_do_perfil>

 

<item>
<modulo>Desenvolvimento Organizacional</modulo>
<codigo_modulo>1</codigo_modulo>
<sistema>Treinamento</sistema>
<cod_sistema>7</cod_sistema>
<servico>Anúncios</servico>
<pasta_servico>/App/RS/selecao/anuncios/</pasta_servico>
<cod_servico>39</cod_servico>
<icone_servico>ico273.gif</icone_servico>
</item>

 

</permissoes_do_perfil>
</ComponentesASP>

 

Mas se minha ideia de montar a estrutura assim <modulo codigo="1">Desenvolvimento Organizacional</modulo> estiver correta, como faço para meu código ASP ler os atributos da tag?

No caso seria codigo="1" do nó chamado modulo.

 

 

 

O ASP que lê o XML é este (que devo ter pego neste fórum mesmo...)

		'Cria instância de objeto XML
		set docXML = server.createObject("Microsoft.XMLDOM")
		
		'Define modo de leitura
		docXML.async = false
		
		'Mapeia arquivo
		docXML.load(server.mappath("arquivo.xml"))
		
		set registro = docXML.getElementsByTagName("permissoes_do_perfil")
		set registro = docXML.getElementsByTagName("item")
		
		'Faz varredura no arquivo
		For iLoop=0 to registro.length - 1
		
		vservico = registro.item(iLoop).selectSingleNode("./servico").text
		vcodservico = registro.item(iLoop).selectSingleNode("./cod_servico").text
		viconeservico = registro.item(iLoop).selectSingleNode("./icone_servico").text
		vpastaservico = registro.item(iLoop).selectSingleNode("./pasta_servico").text
		
		'Constrói menu
		response.Write "<div class=menuLtLinha onclick=goto(this.id) id=" : Response.Write(vpastaservico) :response.Write(">")  
		response.Write "<div class=menuLtItem title= "&vservico&">" 
		response.Write "<div class=menuLtIcone>"
		response.Write("<img src=../../../../../Imagens/"): response.write (viconeservico):response.Write(">")  
		response.Write "<!-- fim .menuLtIcone--></div>"
		response.write (vpastaservico) 
		response.Write "<!-- .fim menuLtItem--></div>" 
		response.Write "<!-- .fim menuLtLinha--></div>" 
		Next

Brigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

leia o getElementsByTagName("nome_tag").[0];

 

lerXml(){
var xmlDoc = ajax.responseXML;
var canal = xmlDoc.getElementsByTagName("nome_tag").[0];
var imagem = canal.getElementsByTagName("nome_tag2").[0]; // Aqui temos agora o conteúdo da TAG nome_tag2 só falta chamar a função para gravar no TXT, podemos trabalhar dentro de cada uma vamos supor que eu queira exibir num Alert
exibeDados(imagem);
}
exibeDados(imagem){
var dados = imagem;
var titulo = dados.getElementsByTagName("title").[0].nodeValue;
var url = dados.getElementsByTagName("url").[0].nodeValue;
var link = dados.getElementsByTagName("link").[0].nodeValue;
window.alert("Aqui os dados da IMAGEM\nTitulo -" + titulo +"\nURL - " + url +"\nLINK - " + link);
/*

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso k postei em ajax

mas em asp, mesma coisa

var canal = xmlDoc.getElementsByTagName("nome_tag").[0];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm tentei isso

v_cod_modulo = registro.item(iLoop).selectSingleNode("./modulo").attributes(0).text

E o XML é assim

<modulo id="1">Desenvolvimento Organizacional</modulo>

Deu certo!

 

Mas preciso criar uma forma de ler sem as duplicidades. Como se fosse um DISTINCT do SQL, sabe?

Serão quatro valores diferentes para o node<modulo></modulo>. Mas que se repetirão muitas vezes em função dos nós filhos.

Tem uma forma de pegar valores únicos para o node <modulo></modulo>?

 

<item>
<modulo id="1">Desenvolvimento Organizacional</modulo> --- Isso aqui se repetirá...
<codigo_modulo>1</codigo_modulo>
<sistema>Treinamento</sistema>... porque aqui serão valores diferentes
<cod_sistema>7</cod_sistema>... porque aqui serão valores diferentes
<servico>Anúncios</servico>... porque aqui serão valores diferentes
<pasta_servico>/App/RS/selecao/anuncios/</pasta_servico>... porque aqui serão valores diferentes
<cod_servico>39</cod_servico>... porque aqui serão valores diferentes
<icone_servico>ico273.gif</icone_servico>... porque aqui serão valores diferentes
</item>

 

Brigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada n fórum que postei um exemplo em como ler num loop todos os elementos tag do XML

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.