Ir para conteúdo

POWERED BY:

Arquivado

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

Asteriscos

[Resolvido] xmlhttp - Receber o xml pelo ASP

Recommended Posts

Pessoal,

 

Gostaria de saber como resgatar o XML enviado através de uma página ASP. Segue o código.

 

<%
'requisita_dados.asp
'Página que faz a requisição passando um XML

strXml = ""
strXml = strXml & "<dados>"
strXml = strXml & "	<campo1>aaa</campo1> "
strXml = strXml & "	<campo2>bbb</campo2> "
strXml = strXml & "</dados>"

sUrl = "recupera_xml_trata_e_retorna.asp"

Set xmlhttp = CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST", sUrl, False
xmlhttp.Send strXml 'Envia o XML

'Exibe o retorno dado pela página recupera_xml_trata_e_retorna.asp
response.write xmlhttp.responseText
%>

<%
'recupera_xml_trata_e_retorna.asp
'Página que recupera o xml enviado, grava ele em disco e dá uma mensagem


strxml = '???? que comando recupera o xml enviado via post pela página de requisição????

Set doc = server.CreateObject("Microsoft.XMLDOM")
doc.loadXml(strXml)
doc.save(Server.MapPath("Teste.xml"))

<dados>
  <mensagem>XML recebido com sucesso.</mensagem>
</dados>
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro você cria o XML e depois você resgata? como será p processo?

 

ou o xml já está criado em uma pagina .asp e você só quer resgatar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vê se ajuda, este exemplo:

 

Criar um Arquivo XML

 

<%
' Cria uma instância do controle
Set MsXml = Server.CreateObject("MSXML2.DOMDocument.4.0")
' Caminho onde o arquivo será salvo
str_Arquivo = Server.MapPath("arquivo.xml")

' Verifica se o arquivo existe
If MsXml.Load(str_Arquivo) Then
  Response.Write "O arquivo já existe!"
Else
  ' O método createElement adiciona os elementos
  Set root = MsXml.createElement("ComponentesASP")
  MsXml.appendChild(root)

  ' O método createProcessingInstruction possui 2 argumentos: o TARGET = "xml" e DATA = "version='1.0' encoding='ISO-8859-1'"
  Set inst = MsXml.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
  MsXml.insertBefore inst, root

  ' Adiciona um comentário ao documento XML
  Set com = MsXml.createComment("Documento XML de exemplo")
  MsXml.insertBefore com, root

  Set onode = MsXml.createElement("ManipulaçãoXML")

  ' *****************************************************
  ' * Adiciona um ítem ao documento
  ' *****************************************************
  MsXml.documentElement.appendChild(onode)
  Set inode = MsXml.createElement("item")
  onode.appendChild(inode)

  Set child = MsXml.createElement("nome")
  child.Text = "MSXML - Microsoft"
  inode.appendChild(child)

  Set child = MsXml.createElement("versão")
  child.Text = "2.0 / 2.6 / 3.0 / 4.0"
  inode.appendChild(child)

  Set child = MsXml.createElement("fabricante")
  child.Text = "http://www.microsoft.com/"
  inode.appendChild(child)
  ' *****************************************************

  ' *****************************************************
  ' * Adiciona um ítem ao documento
  ' *****************************************************
  MsXml.documentElement.appendChild(onode)
  Set inode = MsXml.createElement("item")
  onode.appendChild(inode)

  Set child = MsXml.createElement("nome")
  child.Text = "ASP XML Parser - Chilkat Software"
  inode.appendChild(child)

  Set child = MsXml.createElement("versão")
  child.Text = "2.2.1"
  inode.appendChild(child)

  Set child = MsXml.createElement("fabricante")
  child.Text = "http://www.chilkatsoft.com/"
  inode.appendChild(child)
  ' *****************************************************

  ' Salva o arquivo no caminho especificado
  MsXml.save(str_Arquivo)

  ' Tira os objetos da memória
  Set child = Nothing
  Set inode = Nothing
  Set onode = Nothing
  Set com   = Nothing
  Set inst  = Nothing
  Set root  = Nothing

  Response.Write "Arquivo XML criado com sucesso!"
End If

' Tira o objeto da memória
Set MsXml = Nothing

%>

 

Ler um Arquivo XML

 

 

<%
' Cria uma instância do controle
Set MsXml = Server.CreateObject("MSXML2.DOMDocument.4.0")
' Indicamos que o download em segundo plano não é permitido
MsXml.async = False
' Carrega o documento XML
MsXml.load( Server.MapPath("arquivo.xml") )

' O método parseError contém informações sobre o último erro ocorrido
If MsXml.parseError <> 0 Then
  Response.Write "Código do erro: "& MsXml.parseError.ErrorCode &"<br />"
  Response.Write "Posição no arquivo: "& MsXml.parseError.FilePos &"<br />"
  Response.Write "Linha: "& MsXml.parseError.Line &"<br />"
  Response.Write "Posição na linha: "& MsXml.parseError.LinePos &"<br />"
  Response.Write "Descrição: "& MsXml.parseError.Reason &"<br />"
  Response.Write "Texto que causa o erro: "& MsXml.parseError.srcText &"<br />"
  Response.Write "Arquivo com problemas: " & MsXml.parseError.URL
Else
  ' A propriedade documentElement refere-se à raiz do documento
  Set raiz = MsXml.documentElement

  'Looping para percorrer todos os elementos filhos
  For i = 0 To raiz.childNodes.length -1
	' A propriedade NodeName contém o nome do elemento e a propriedade childNodes contém a lista de elementos filhos
	Response.Write raiz.NodeName & "<br />"
	Response.Write raiz.childNodes.item(i).childNodes.item(0).text & "<br />"
	Response.Write raiz.childNodes.item(i).childNodes.item(1).text & "<br />"
  Next 
End If

' Tira o objeto da memória
Set MsXml = Nothing

%>

nao eskça de procurar no forum, existem varios exemplos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro você cria o XML e depois você resgata? como será p processo?

 

ou o xml já está criado em uma pagina .asp e você só quer resgatar?

Quero resgatar. Se eu dei um Post passando um xml para outra página, como faço para recuperá-lo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vê se ajuda, este exemplo:

 

Criar um Arquivo XML

 

<%
' Cria uma instância do controle
Set MsXml = Server.CreateObject("MSXML2.DOMDocument.4.0")
' Caminho onde o arquivo será salvo
str_Arquivo = Server.MapPath("arquivo.xml")

' Verifica se o arquivo existe
If MsXml.Load(str_Arquivo) Then
  Response.Write "O arquivo já existe!"
Else
  ' O método createElement adiciona os elementos
  Set root = MsXml.createElement("ComponentesASP")
  MsXml.appendChild(root)

  ' O método createProcessingInstruction possui 2 argumentos: o TARGET = "xml" e DATA = "version='1.0' encoding='ISO-8859-1'"
  Set inst = MsXml.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
  MsXml.insertBefore inst, root

  ' Adiciona um comentário ao documento XML
  Set com = MsXml.createComment("Documento XML de exemplo")
  MsXml.insertBefore com, root

  Set onode = MsXml.createElement("ManipulaçãoXML")

  ' *****************************************************
  ' * Adiciona um ítem ao documento
  ' *****************************************************
  MsXml.documentElement.appendChild(onode)
  Set inode = MsXml.createElement("item")
  onode.appendChild(inode)

  Set child = MsXml.createElement("nome")
  child.Text = "MSXML - Microsoft"
  inode.appendChild(child)

  Set child = MsXml.createElement("versão")
  child.Text = "2.0 / 2.6 / 3.0 / 4.0"
  inode.appendChild(child)

  Set child = MsXml.createElement("fabricante")
  child.Text = "http://www.microsoft.com/"
  inode.appendChild(child)
  ' *****************************************************

  ' *****************************************************
  ' * Adiciona um ítem ao documento
  ' *****************************************************
  MsXml.documentElement.appendChild(onode)
  Set inode = MsXml.createElement("item")
  onode.appendChild(inode)

  Set child = MsXml.createElement("nome")
  child.Text = "ASP XML Parser - Chilkat Software"
  inode.appendChild(child)

  Set child = MsXml.createElement("versão")
  child.Text = "2.2.1"
  inode.appendChild(child)

  Set child = MsXml.createElement("fabricante")
  child.Text = "http://www.chilkatsoft.com/"
  inode.appendChild(child)
  ' *****************************************************

  ' Salva o arquivo no caminho especificado
  MsXml.save(str_Arquivo)

  ' Tira os objetos da memória
  Set child = Nothing
  Set inode = Nothing
  Set onode = Nothing
  Set com   = Nothing
  Set inst  = Nothing
  Set root  = Nothing

  Response.Write "Arquivo XML criado com sucesso!"
End If

' Tira o objeto da memória
Set MsXml = Nothing

%>

 

Ler um Arquivo XML

 

 

<%
' Cria uma instância do controle
Set MsXml = Server.CreateObject("MSXML2.DOMDocument.4.0")
' Indicamos que o download em segundo plano não é permitido
MsXml.async = False
' Carrega o documento XML
MsXml.load( Server.MapPath("arquivo.xml") )

' O método parseError contém informações sobre o último erro ocorrido
If MsXml.parseError <> 0 Then
  Response.Write "Código do erro: "& MsXml.parseError.ErrorCode &"<br />"
  Response.Write "Posição no arquivo: "& MsXml.parseError.FilePos &"<br />"
  Response.Write "Linha: "& MsXml.parseError.Line &"<br />"
  Response.Write "Posição na linha: "& MsXml.parseError.LinePos &"<br />"
  Response.Write "Descrição: "& MsXml.parseError.Reason &"<br />"
  Response.Write "Texto que causa o erro: "& MsXml.parseError.srcText &"<br />"
  Response.Write "Arquivo com problemas: " & MsXml.parseError.URL
Else
  ' A propriedade documentElement refere-se à raiz do documento
  Set raiz = MsXml.documentElement

  'Looping para percorrer todos os elementos filhos
  For i = 0 To raiz.childNodes.length -1
	' A propriedade NodeName contém o nome do elemento e a propriedade childNodes contém a lista de elementos filhos
	Response.Write raiz.NodeName & "<br />"
	Response.Write raiz.childNodes.item(i).childNodes.item(0).text & "<br />"
	Response.Write raiz.childNodes.item(i).childNodes.item(1).text & "<br />"
  Next 
End If

' Tira o objeto da memória
Set MsXml = Nothing

%>

nao eskça de procurar no forum, existem varios exemplos...

O que preciso não é ler ou gravar um arquivo fisico no disco. O que preciso é fazer uma interface entre dois sistemas por XML. Eu dou um post em uma URL e passo o XML de entrada. Esse XML precisa ser processado e gerado um retorno para o cliente que fez a requisição. O que não consegui é o código que lê o XML passado pelo Post do objeto xmlhttp. Eu só coloquei o xml fisico no disco apenas para verificar se realmente estou recebendo e qual foi o xml de origem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem haver com xsl

 

Já descobri o que precisava, era apenas o comando request

 

Mas obrigado pelas sugestões.

 

<%
'requisita_dados.asp
'Página que faz a requisição passando um XML

strXml = ""
strXml = strXml & "<dados>"
strXml = strXml & "	<campo1>aaa</campo1> "
strXml = strXml & "	<campo2>bbb</campo2> "
strXml = strXml & "</dados>"

sUrl = "recupera_xml_trata_e_retorna.asp"

Set xmlhttp = CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST", sUrl, False
xmlhttp.Send strXml 'Envia o XML

'Exibe o retorno dado pela página recupera_xml_trata_e_retorna.asp
response.write xmlhttp.responseText
%>

<%
'recupera_xml_trata_e_retorna.asp
'Página que recupera o xml enviado, grava ele em disco e dá uma mensagem

Set doc = server.CreateObject("Microsoft.XMLDOM")
doc.loadXml(request) ' <---------- Só colocar o request aqui era o que eu queria saber.
doc.save(Server.MapPath("Teste.xml"))

<dados>
  <mensagem>XML recebido com sucesso.</mensagem>
</dados>
%>

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.