Enviar XML usando XMLHTTP

Índice

Eu criei um script básico para enviar uma string XML ou arquivo para um servidor da web usando Excel VBA e um script PHP simples para receber os dados. O processo usa XMLHTTP.

O objetivo é criar um script de upload simples para atualizar um servidor com dados XML criados a partir de uma planilha. Em seguida, faça com que várias pastas de trabalho do usuário final sejam mapeadas para o arquivo central e crie relatórios a partir dele. As porcas e parafusos básicos:

Para o exemplo, eu uso uma string XML básica que se parece com isto:

1234567891011 myxml = "<? xml version =" "1.0" "?>" & _"" E _"polo masculino" & _"4,89" e _"ampla" & _""

O PHP que usei simplesmente retorna os dados que foram enviados de volta para o Excel. Então, se você receber os mesmos dados XML que enviou em uma caixa de mensagem, você fez isso corretamente. Se nenhum dado de postagem for encontrado, aparecerá “sem dados”. A localização do URL de teste é /pl/xlxml.php

Obviamente, você deseja atualizar o script para salvar o conteúdo do arquivo em seu servidor para usos práticos. Este é o PHP para receber os dados de postagem em XML e retorná-los:

1234567891011121314151617

Então, agora sabemos o que estamos enviando e como recebê-lo, vamos enviar os dados XML!

O código a seguir foi criado no Excel 2003 e usando uma referência a Ferramentas-> Referências-> Microsoft XML v5.0 no editor VB. Está bem comentado para que você possa ver tudo o que está acontecendo:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 Sub SendXML ()'Variável HTTPDim myHTTP como MSXML2.XMLHTTP'Objeto HTTPDefinir myHTTP = CreateObject ("msxml2.xmlhttp")'criar variável de documento dom'armazena o xml para enviarDim myDom As MSXML2.DOMDocument'Crie o objeto DomDocumentDefinir myDom = CreateObject ("MSXML2.DOMDocument")'Carregue o documento inteiro antes de prosseguirmyDom.async = False'Variável de string xml'substitua por localização se estiver enviando de arquivo ou URLDim myxml As Stringmyxml = "<? xml version =" "1.0" "?>" & _"" E _"polo masculino" & _"4,89" e _"ampla" & _""'carrega o xml'mude para .Load para arquivo ou urlmyDom.loadXML (myxml)'abrir a conexãomyHTTP.Open "post", _"https://www.automateexcel.com/excel/pl/xlxml.php", False'envie o XMLmyHTTP.Send (myDom.XML)'Exibir a respostaMsgBox myHTTP.ResponseTextEnd Sub

Se você chegou até aqui, adicionou uma referência e executou o código, verá que de fato o PHP recebeu e retornou o XML:

Notas: Eu apenas criei dinamicamente o XML ou carreguei-o de arquivos XML e URLs, a seguir é enviar dados de um mapa XML.

Eu ecoei os dados de volta para o Excel em vez de gravá-los no servidor porque a URL é pública, eu queria dar às pessoas uma sandbox e não ter arquivos aleatórios sendo enviados ao meu servidor.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave