1. Home
  2. Hospedagem de Sites
  3. Como usar o componente XMLDOM e XMLHTTP

Como usar o componente XMLDOM e XMLHTTP

Veja neste artigo exemplos dos compenentes XMLDOM e XMLHTTP, para ser utilizados na sua aplicação.

Lembramos que os códigos que serão mencionados abaixo, são exemplos, e a Locaweb, não responsabiliza por qualquer dano na sua aplicação, procure sempre o desenvolvedor de confiança.

XMLDOM
  • Com o componente XMLDOM podemos manipular qualquer tipo de informação que esteja na árvore de elementos do documento XML.
  • Existem algumas versões do XMLDOM, e você pode criar o seu código ASP com uma das versões que possuímos instaladas no servidor:
Versão ProgID
MSXML 2.0 (“Microsoft.XMLDOM”) ou (“MSXML.DOMDocument”)
MSXML 2.6 (“MSXML2.DOMDocument”)
MSXML 3.0 (“MSXML2.DOMDocument.3.0”)
MSXML 4.0 (“MSXML2.DOMDocument.4.0”)
MSXML 6.0 (“MSXML2.DOMDocument.6.0”)
  • Em nossos exemplos utilizamos sempre a versão 6.0.
  • O exemplo abaixo demonstra a criação de um arquivo XML.

Nome do arquivo: Criar_XML.asp

<%
' Cria uma objeto
Set MSXML = Server.CreateObject("MSXML2.DOMDocument.6.0")
 
str_Arquivo = Server.MapPath("arquivo_XML.xml")
 
If MSXML.Load(str_Arquivo) Then
  Response.Write "O arquivo já existe!"
  Response.Write "<br>"
  Response.Write "<br>"
Else
 
  ' Adiciona elementos
  Set raiz = MSXML.createElement("Brasil")
  MSXML.appendChild(raiz)
 
  Set inst = MSXML.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
  MSXML.insertBefore inst, raiz
 
  Set comment = MSXML.createComment("Documento XML de Exemplo - Locaweb")
  MSXML.insertBefore comment, raiz
 
  Set onod = MSXML.createElement("Cidades_Brasileiras")
 
  ' Adiciona itens
  MSXML.documentElement.appendChild(onod)
  Set inod = MSXML.createElement("Localidades")
  onod.appendChild(inod)
  Set child = MSXML.createElement("Estado")
  child.Text = "Minas Gerais - "
  inod.appendChild(child)
  Set child = MSXML.createElement("Capital")
  child.Text = "Belo Horizonte - "
  inod.appendChild(child)
  Set child = MSXML.createElement("UF")
  child.Text = "MG"
  inod.appendChild(child)
 
  MSXML.documentElement.appendChild(onod)
  Set inod = MSXML.createElement("Localidades")
  onod.appendChild(inod)
  Set child = MSXML.createElement("Estado")
  child.Text = "Bahia - "
  inod.appendChild(child)
  Set child = MSXML.createElement("Capital")
  child.Text = "Salvador - "
  inod.appendChild(child)
  Set child = MSXML.createElement("UF")
  child.Text = "BA"
  inod.appendChild(child)
 
  MSXML.documentElement.appendChild(onod)
  Set inod = MSXML.createElement("Localidades")
  onod.appendChild(inod)
  Set child = MSXML.createElement("Estado")
  child.Text = "Amazonas - "
  inod.appendChild(child)
  Set child = MSXML.createElement("Capital")
  child.Text = "Manaus - "
  inod.appendChild(child)
  Set child = MSXML.createElement("UF")
  child.Text = "AM"
  inod.appendChild(child)
 
  MSXML.save(str_Arquivo)
 
  Set child     = Nothing
  Set inod      = Nothing
  Set onod      = Nothing
  Set comment   = Nothing
  Set inst      = Nothing
  Set raiz      = Nothing
 
  Response.Write "Arquivo XML criado com sucesso!"
  Response.Write "<br>"
  Response.Write "<br>"
End If
 
Set MSXML = Nothing
%>
  • O exemplo abaixo demonstra a requisição de dados de um arquivo XML utilizando o componente XMLDOM.

Nome do arquivo: Ler_XMLDOM.asp

<%
' Cria uma objeto
Set MSXML = Server.CreateObject("MSXML2.DOMDocument.6.0")
 
' Indicamos que o download em segundo plano não é permitido
MSXML.async = False
 
MSXML.load( Server.MapPath("arquivo_XML.xml") )
 
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
 
  Set raiz = MSXML.documentElement
 
  For i = 0 To raiz.childNodes.length -1
    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
 
Set MSXML = Nothing
 
%>
XMLHTTP
  • Com o XMLHTTP podemos fazer solicitações (requests) a outras páginas de outros servidores com a finalidade de conectarmos com APIs de terceiros (Twitter, Youtube, entre outros) para trocarmos informações entre sites/serviços.
  • O exemplo abaixo demonstra a requisição de dados de um arquivo XML utilizando o componente XMLHTTP.

Nome do arquivo: Ler_XMLHTTP.asp

<% 
url = "dominio.com.br/arquivo_XML.xml"
 
Set objSrvHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
objSrvHTTP.setTimeouts 5000, 5000, 5000, 5000
objSrvHTTP.Open "GET", url, False
objSrvHTTP.Send()
Response.Write objSrvHTTP.responseText
 
Set objSrvHTTP = Nothing
%>

Importante: utilize sempre o componente MSXML2.ServerXMLHTTP.6.0

  • Qualquer outra versão anterior a esta poderá causar instabilidade no seu site.

Obs.: O componente MSXML2.ServerXMLHTTP deve ser utilizado para chamar arquivos em formato XML.

  • No caso de desejar trabalhar com XML dinâmicos, é necessário realizar a alimentação de informações no mesmo.

Se o arquivo requisitado pela aplicação estiver na mesma hospedagem será necessário a criação de uma Aplicação (diretório virtual) no diretório que estiver com os arquivos e a versão do framework deverá ser diferente da utilizada pelo restante da aplicação (exemplo aplicação rodando na versão 2.0/3.5 e diretório com arquivos na versão 1.1)

Aproveite e conheça outros produtos da Locaweb, como o Cloud Hosting, clique aqui e saiba mais!

Atualizado em 31 de julho de 2019

Este artigo foi útil ?

Artigos relacionados