xml datei inhalt aus internet laden



  • hi,

    ich möchte gerne, aus c++, eine xml datei aus dem internet laden, die informationen enthält die weiterverwendet werden. jetzt ist meine frage, wie mach ich das am geschicktesten, muss ich die datei downloaden und dann von der hd aus parsen oder gibt es eine möglichkeit die xml datei direkt aus dem netz zu lesen? (sollte geschehen ohne dass irgendein browser fenster aufgeht)

    thx
    lordy



  • MSXML kann das :

    ...
    XMLDoc.load("http://www.example.com/reports.xml")
    ...
    


  • mhm thx 🙂 - und mit welchem systemaufruf würde man die datei herunterladen (ohne dass der standard dialog aufgeht) sollte einfach irgendwo gespeichert werden, dann drüber geparst und wieder gelöscht werden



  • Mit genau der Funktion müsste es gehen :

    ...
    deinDomDoc->load(_variant_t("---url---"), &Result);
    ...
    

    Ist aber kein Systemaufruf, sondern eine Memberfunktion von IXMLDOMDocument2.

    wenn ich eine gültige URL hätte, könnte ich es gerade ausprobieren,
    habe die Infrastuktir schon fertig, nur hole ich XML aus einem String...



  • danke für deine mühe! versuch mal:
    http://students.fhs-hagenberg.ac.at/bin/bin02014/__xmlTest/test.xml

    muss sagen bei xml und c++ schwimm i ein bisserle, in c# is viel einfacher gegangen 😉
    wenns funktioniert bitte lösung posten 😃



  • Ja, es funzt so wie ich dachte 🙂 :

    IXMLDOMDocument2 *pIXMLDOMDocument = NULL;
    try
    {
     ::CoInitialize(NULL);
     // Create an instance of DOMDocument and initialize pIXMLDOMDocument.
     hr = CoCreateInstance(CLSID_DOMDocument2, NULL, CLSCTX_SERVER, 
      	  	     IID_IXMLDOMDocument2, (LPVOID*)(&pIXMLDOMDocument));
     // Load/create an XML fragment.
     pIXMLDOMDocument->put_async(VARIANT_FALSE); // default - true,
    
     pIXMLDOMDocument->load(_variant_t("http://students.fhs- hagenberg.ac.at/bin/bin02014/__xmlTest/test.xml"), &Result);
     if(Result !=VARIANT_TRUE)
     {
       printf("Failed to load xml");
       return FALSE;
    }
    


  • jetzt müsste ich nur mehr wissen, wie ich das variant_t zum laufen bringe, brauch ich da ein include? weil msdn meint dazu "Constructs a _variant_t object."
    und vom datentyp her würde die funktion eine struct tagVARIANT verlangen, was immer das auch ist 😕

    "error C3861: '_variant_t': identifier not found, even with argument-dependent lookup"



  • Du brauchst
    #include "COMDEF.H"


Anmelden zum Antworten