XML verzenden met XMLHTTP

Inhoudsopgave

Ik heb een basisscript samengesteld voor het verzenden van een XML-string of -bestand naar een webserver met Excel VBA en een eenvoudig PHP-script om de gegevens te ontvangen. Het proces maakt gebruik van XMLHTTP.

Het doel is om een ​​eenvoudig uploadscript te maken om een ​​server bij te werken met XML-gegevens die zijn gemaakt op basis van een spreadsheet. Laat vervolgens meerdere werkmappen van eindgebruikers toewijzen aan het centrale bestand en maak er rapporten van. De basis moeren en bouten:

Voor het voorbeeld gebruik ik een eenvoudige XML-tekenreeks die er als volgt uitziet:

1234567891011 mijnxml = "<?xml version=""1.0""?>" & _"" & _"heren polo" & _"4.89" & _"groot" & _""

De PHP die ik heb gebruikt, retourneert eenvoudig de gegevens die zijn teruggestuurd naar Excel. Dus als u dezelfde XML-gegevens ontvangt die u in een berichtvenster hebt verzonden, hebt u het correct gedaan. Als er geen berichtgegevens worden gevonden, staat er "geen dobbelstenen". De locatie van de test-URL is /pl/xlxml.php

Het is duidelijk dat u het script wilt bijwerken om de bestandsinhoud op uw server op te slaan voor praktisch gebruik. Hier is de PHP om de XML-postgegevens te ontvangen en terug te sturen:

1234567891011121314151617

Dus we weten nu wat we verzenden en hoe we het moeten ontvangen, laten we de XML-gegevens verzenden!

De volgende code is gemaakt in Excel 2003 en gebruikt een verwijzing naar Extra->Referenties->Microsoft XML v5.0 in de VB-editor. Het is goed becommentarieerd, zodat je alles kunt zien wat er aan de hand is:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 SubSendXML()'HTTP-variabele'Dim myHTTP als MSXML2.XMLHTTP'HTTP-object'Stel mijnHTTP = CreateObject ("msxml2.xmlhttp") in'maak dom documentvariabele''slaat de xml op om te verzenden'Dim myDom als MSXML2.DOMDocument'Maak het DomDocument-object'Stel mijnDom = CreateObject("MSXML2.DOMDocument")'Laad het hele document voordat u verder gaat'mijnDom.async = False'xml-tekenreeksvariabele''vervang door locatie bij verzenden vanuit bestand of URLDim myxml als stringmijnxml = "<?xml version=""1.0""?>" & _"" & _"heren polo" & _"4.89" & _"groot" & _""'laadt de xml''wijzig naar .Laden voor bestand of urlmijnDom.loadXML (mijnxml)'open de verbinding'mijnHTTP.Open "post", _"https://www.automateexcel.com/excel/pl/xlxml.php", False'verstuur de XML'mijnHTTP.Verzenden (mijnDom.XML)'Toon de reactie'MsgBox mijnHTTP.ResponstekstEinde sub

Als je zo ver bent gekomen, een referentie hebt toegevoegd en de code hebt uitgevoerd, zul je zien dat PHP inderdaad de XML heeft ontvangen en geretourneerd:

Opmerkingen: ik heb de XML alleen dynamisch gemaakt of geladen vanuit XML-bestanden en URL's, de volgende is het verzenden van gegevens vanaf een XML-kaart.

Ik heb de gegevens teruggestuurd naar Excel in plaats van ze naar de server te schrijven omdat de URL openbaar is, ik wilde mensen een sandbox geven en geen willekeurige bestanden naar mijn server sturen.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave