Ir para conteúdo

POWERED BY:

Arquivado

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

gitavares

Consumir um XML..

Recommended Posts

nadinha... mesma coisa ainda.. mostra nada.. alterei algumas coisinhas também, mas ainda não funcionou.. quando coloquei novovalor = objNode2.nodeName & ": " & objNode2.firstChild.nodeValue, como tem no outro script, deu o seguinte erro:Objeto necessário: 'objNode2.firstChild' provavlmente por conta daquilo que você falou, de DATA, por exemplo, não ter filhos. o que eu faço?eu já entendi como isso tudinho funciona direitinho, mas não tô vendo solução... meu deus...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste com esse:

<%
' Script ASP Para leitura de arquivos de RSS.
Total= Total 
Transacao= Transacao 
Parcelas= Parcelas 
Filiacao= Filiacao 
NumPedido= NumPedido 
Nrcartao= Nrcartao 
CVC2= CVC2 
Mes= Mes 
Ano= Ano 
Portador= Portador 
IATA= IATA 
Distribuidor= Distribuidor 
Concentrador= Concentrador 
TaxaEmbarque= TaxaEmbarque 
Entrada= Entrada 
Pax1= Pax1 
Pax2= Pax2 
Pax3= Pax3 
Pax4= Pax4 
Numdoc1= Numdoc1 
Numdoc2= Numdoc2
Numdoc3= Numdoc3 
Numdoc4= Numdoc4 
ConfTxn= ConfTxn
'URL do arquivo
url = "https://ecommerce.redecard.com.br/pos_virtual/wskomerci/cap.asmx/GetAuthorizedTst?Total="& Total &"&Transacao="& Transacao &"&Parcelas="& Parcelas &"&Filiacao="& Filiacao &"&NumPedido="& NumPedido &"&Nrcartao="& Nrcartao &"&CVC2="& CVC2 &"&Mes="& Mes &"&Ano="& Ano &"&Portador="& Portador &"&IATA="& IATA &"&Distribuidor="& Distribuidor &"&Concentrador="& Concentrador &"&TaxaEmbarque="& TaxaEmbarque &"&Entrada="& Entrada &"&Pax1="& Pax1 &"&Pax2="& Pax2 &"&Pax3="& Pax3 &"&Pax4="& Pax4 &"&Numdoc1="& Numdoc1 &"&Numdoc2="& Numdoc2& "&Numdoc3="& Numdoc3 &"&Numdoc4="& Numdoc4 &"&ConfTxn="& ConfTxn
' Criando Objeto XML
Set objXML = Server.CreateObject("msxml2.DOMDocument.3.0") 
'Set objXML = Server.CreateObject("DOMDocument") 
objXML.async = false 
objXML.setProperty "ServerHTTPRequest", True 

' Não validar o arquivo
objXML.validateOnParse =false' true 

' Retirar espaços 
objXML.preserveWhiteSpace = false 

blnLoaded = objXML.Load(url) 
If Not blnLoaded Then 
Response.write "Nenhum notícia na fonte!" 
Else
set objNodeList = objXML.getElementsByTagName("AUTHORIZATION") 

For Each objNode In objNodeList 
	For Each objNode2 In objNode.childNodes 
		Select Case objNode2.nodeName 
			Case "CODRET" 
				CODRET = objNode2.nodevalue 
			Case "MSGRET" 
				MSGRET = objNode2.nodevalue 
			Case "NUMPEDIDO" 
				NUMPEDIDO = objNode2.nodevalue 
			Case "DATA" 
				DATA = objNode2.nodevalue 
			Case "NUMAUTOR" 
				NUMAUTOR = objNode2.nodevalue 
			Case "NUMCV" 
				NUMCV = objNode2.nodevalue 
			Case "NUMAUTENT" 
				NUMAUTENT = objNode2.nodevalue 
			Case "NUMSQN" 
				NUMSQN = objNode2.nodevalue 
			Case "ORIGEM_BIN" 
				ORIGEM_BIN = objNode2.nodevalue 
		End Select 
	Next
Next 

set objNodeList = Nothing 
End if 
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
</head>

<body>
CODRET: <%=CODRET%><BR>
MSGRET: <%=MSGRET%><BR>
NUMPEDIDO: <%=NUMPEDIDO%><BR>
DATA: <%=DATA%><BR>
NUMAUTOR: <%=NUMAUTOR%><BR>
NUMCV: <%=NUMCV%><BR>
NUMAUTENT: <%=NUMAUTENT%><BR>
NUMSQN: <%=NUMSQN%><BR>
ORIGEM_BIN: <%=ORIGEM_BIN%><BR>
</body>
</html>

Passe dados validos para o teste e verifique se retorna corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, do jeitinho que está aí, ficou em branco também, mas fiz umas alterações e ficou assim:

Case "CODRET" 					CODRET = objNode2.firstChild.nodevalue 				Case "MSGRET" 					MSGRET = objNode2.firstChild.nodevalue 				Case "NUMPEDIDO" 					NUMPEDIDO = objNode2.firstChild.nodevalue 				Case "DATA" 					DATA = objNode2.nodevalue 				Case "NUMAUTOR" 					NUMAUTOR = objNode2.nodevalue 				Case "NUMCV" 					NUMCV = objNode2.nodevalue 				Case "NUMAUTENT" 					NUMAUTENT = objNode2.nodevalue 				Case "NUMSQN" 					NUMSQN = objNode2.nodevalue 				Case "ORIGEM_BIN" 					ORIGEM_BIN = objNode2.nodevalue

a princípio está funcionando, mas nunca tenho o retorno das outras tags. vou fazer mais uns testes aqui e ver se os valores das outras tags aparecem. valeu galera! já já eu tô aqui novamente com mais problemas ou solução :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente, eu não sei porque não está funcionando...

 

o retorno do xml da redecard era pra retornar assim:

 

<?xml version="1.0" encoding="utf-8"?><AUTHORIZATION><CODRET>9</CODRET><MSGRET>Mensagem</MSGRET><NUMPEDIDO>string</NUMPEDIDO><DATA>99999999</DATA><NUMAUTOR>999999</NUMAUTOR><NUMCV>999999999</NUMCV><NUMAUTENT>999999</NUMAUTENT><NUMSQN>999999999</NUMSQN><ORIGEM_BIN>XXX</ORIGEM_BIN><CONFCODRET>9</CONFCODRET><CONFMSGRET>Mensagem</CONFMSGRET><IATA>999999999</IATA><DISTRIBUIDOR>999999999999</DISTRIBUIDOR></AUTHORIZATION>

mas a partir da DATA, nada aparece... já coloquei objNode2.firstChild.nodevalue em todos, e dá erro.

 

tem alguma forma genérica de mostrar todos os dados? porque se eu coloco:

 

For Each objNode In objNodeList   For Each objNode2 In objNode.childNodes 	  novovalor = objNode2.nodeName & ": " & objNode.firstChild.nodeValue	  html = html & novovalor & "<br />"   NextNext

não aparece nada. tem alguma outra forma? porque se a transação não for autorizada, ele só mostra os 3 primeiros dados. se ela for autorizada, tem que mostrar tudo.. alguém me ajuda, plsss!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, giselle.

 

Resolvi brincar um pouco com esse xml seu aí usando javascript (tava com preguiça de ativar o servidor asp) e desenvolvi algumas funçõezinhas javascript. Talvez a rotina javascript que eu fiz te ajude.

 

Uma coisa que eu percebi, tanto no interpretador das funções DOM no IE quanto no FF, é que um conteúdo de texto nunca tá diretamente dentro de um nó, mas sim dentro de um filho do tipo #text desse nó.

 

Exemplo:

No nó "<MSGRET>Mensagem</MSGRET>", se eu quiser recuperar o texto "Mensagem", eu não posso escrever apenas "no_do_msgret.nodeValue", pois, na verdade, o Texto "mensagem" tá dentro de um filho #text do msgret. Daí pra acessar eu teria que fazer: no_do_msgret.firstChild.nodeValue".

 

As funções que eu fiz:

<script>function xmlMicoxLoader(url){	if(window.XMLHttpRequest){		var Loader = new XMLHttpRequest();		Loader.open("GET", url ,false);		Loader.send(null);		return Loader.responseXML;	}else if(window.ActiveXObject){		Loader = new ActiveXObject("Msxml2.DOMDocument.3.0");		Loader.async = false;		Loader.load(url);		return Loader;	}}function xmlMicoxArvore(xmlNode,identacao){	var arvoreTxt="";	for(var i=0;i<xmlNode.childNodes.length;i++){//percorrendo os filhos do nó		arvoreTxt = arvoreTxt + identacao + xmlNode.childNodes[i].nodeName + ": "		if(xmlNode.childNodes[i].childNodes.length==0){		//se não tiver filhos eu já pego o nodevalue			arvoreTxt = arvoreTxt + xmlNode.childNodes[i].nodeValue + "\n";		}else if(xmlNode.childNodes[i].childNodes.length>0){		//se tiver filhos eu tenho que pegar o valor pegando o valor do primeiro filho			arvoreTxt = arvoreTxt + xmlNode.childNodes[i].firstChild.nodeValue + "\n";			arvoreTxt = arvoreTxt + xmlMicoxArvore(xmlNode.childNodes[i],identacao + "> > ");		}	}	return arvoreTxt;}xml = xmlMicoxLoader("teste.xml"); //carrega o xmldocument.write(xmlMicoxArvore(xml,"")); //printa a árvore na tela</script>

Talvez, se voce converter o código acima pra asp, lhe seja útil.

dúvidas, poste ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

gente! funcionou!

 

Fiz assim:

(..)	For Each objNode In objNodeList 		For Each objNode2 In objNode.childNodes 		   Select Case objNode2.nodeName 				Case "CODRET" 					CODRET = objNode2.firstChild.nodevalue 				Case "MSGRET" 					MSGRET = objNode2.firstChild.nodevalue 				Case "NUMPEDIDO" 					NUMPEDIDO = objNode2.firstChild.nodevalue 				Case "DATA" 					if CODRET = "0" then						DATA = objNode2.firstChild.nodevalue					else						DATA = objNode2.nodevalue					end if				Case "NUMAUTOR" 					if CODRET = "0" then						NUMAUTOR = objNode2.firstChild.nodevalue					else						NUMAUTOR = objNode2.nodevalue					end if				Case "NUMCV" 					if CODRET = "0" then						NUMCV = objNode2.firstChild.nodevalue					else						NUMCV = objNode2.nodevalue					end if				Case "NUMAUTENT" 					if CODRET = "0" then						NUMAUTENT = objNode2.firstChild.nodevalue					else						NUMAUTENT = objNode2.nodevalue					end if				Case "NUMSQN" 					if CODRET = "0" then						NUMSQN = objNode2.firstChild.nodevalue					else						NUMSQN = objNode2.nodevalue					end if			   Case "ORIGEM_BIN" 					if CODRET = "0" then						ORIGEM_BIN = objNode2.firstChild.nodevalue					else						ORIGEM_BIN = objNode2.nodevalue					end if		   End Select 	   Next	Next (..)

depois eu dou um garu melhor nesse código. o importante é que agora funcionou.

 

micox, vi seu código agorinha, mas depois vou testar, ok?

 

valeu gente! vocês salvam a minha vida sempre! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá gente, eu estou com problemas no Mastercard (REDECARD) tb.Fiz até a validação do cartão, em seguida retorna a seguinte informação "CODRET=0&MSGRET=CONFIRMACAO COM SUCESSO" na tela pop-up onde são digitados os dados do cartão, mas ñ estou conseguindo pegar esses dados para validar a compra.desde já agradeço a todosAgnes

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.