Send XML ved hjelp av XMLHTTP

Innholdsfortegnelse

Jeg har satt sammen et grunnleggende skript for å sende en XML -streng eller fil til en webserver ved hjelp av Excel VBA og et enkelt PHP -script for å motta dataene. Prosessen bruker XMLHTTP.

Målet er å lage et enkelt opplastingsskript for å oppdatere en server med XML -data opprettet fra et regneark. Deretter må flere sluttbruker -arbeidsbøker tilordnes til den sentrale filen og lage rapporter fra den. De grunnleggende muttere og bolter:

For eksempel bruker jeg en grunnleggende XML -streng som ser slik ut:

1234567891011 myxml = "<? xml version =" "1.0" "?>" & _"" & _"herre polo" & _"4.89" & _"stor" & _""

PHP -en jeg har brukt, returnerer ganske enkelt dataene den ble sendt tilbake til Excel. Så hvis du mottar de samme XML -dataene du sendte i en meldingsboks, har du gjort det riktig. Hvis det ikke blir funnet innleggsdata, står det "ingen terninger". Plasseringen av testadressen er /pl/xlxml.php

Tydeligvis vil du oppdatere skriptet for å lagre filinnholdet på serveren din for praktisk bruk. Her er PHP for å motta XML -postdataene og returnere dem:

1234567891011121314151617

Så vi vet nå hva vi sender, og hvordan vi kan motta det, la oss sende XML -dataene!

Følgende kode ble opprettet i Excel 2003 og med en referanse til Verktøy-> Referanser-> Microsoft XML v5.0 i VB-editoren. Det er godt kommentert, slik at du kan se alt som skjer:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 Sub SendXML ()'HTTP -variabelDim myHTTP som MSXML2.XMLHTTP'HTTP -objektAngi myHTTP = CreateObject ("msxml2.xmlhttp")'opprett dom dokumentvariabel'lagrer xml -filen som skal sendesDim myDom som MSXML2.DOMDocument'Opprett DomDocument -objektetSett myDom = CreateObject ("MSXML2.DOMDocument")'Legg i hele dokumentet før du går videremyDom.async = Feil'xml strengvariabel'erstatt med plassering hvis du sender fra fil eller URLDim myxml som strengmyxml = "<? xml version =" "1.0" "?>" & _"" & _"herre polo" & _"4.89" & _"stor" & _""'laster xml'endre til .Last for fil eller nettadressemyDom.loadXML (myxml)'åpne forbindelsenmyHTTP.Åpne "innlegg", _"https://www.automateexcel.com/excel/pl/xlxml.php", usant'send XMLmyHTTP.Send (myDom.XML)'Vis svaretMsgBox myHTTP.ResponseTextSlutt Sub

Hvis du har kommet så langt, lagt til en referanse og kjørt koden, vil du se at PHP faktisk mottok og returnerte XML:

Merknader: Jeg har bare dynamisk opprettet XML eller lastet den fra XML -filer og URL -er. Neste er å sende data fra et XML -kart.

Jeg gjentok dataene tilbake til Excel i stedet for å skrive dem til serveren fordi URL -en er offentlig, jeg ønsket å gi folk en sandkasse og ikke ha tilfeldige filer sendt til serveren min.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave