Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

1

31.08.2008, 19:44

[gelöst]MSXML: Erzeugung über COM funktioniert nicht

der titel sagt das problem. ich möchte MSXML nutzen, und COM hat nicht wirklich lust mir den gefallen zu tun und ein DOMDocument zu erzeugen. CoCreateInstance() liefert egal was ich mache, E_NOINTERFACE, zurück.

code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <msxml2.h>

using namespace std;

int main()
{
    if(FAILED(CoInitialize(0)))
    {
        cout << "nix da bei CoInit!";
        cin.get();
        return -1;
    }

    IXMLDOMDocument2 *pDoc;
    
    HRESULT hr = CoCreateInstance(CLSID_DOMDocument30,0,CLSCTX_INPROC_SERVER,IID_IXMLDocument2,(void**)(&pDoc));

    if(FAILED(hr))
    {
        switch(hr)
        {
        case REGDB_E_CLASSNOTREG: cout << "REGDB_E_CLASSNOTREG"; break;
        case CLASS_E_NOAGGREGATION: cout << "CLASS_E_NOAGGREGATION"; break;
        case E_NOINTERFACE: cout << "E_NOINTERFACE"; break;
        }

        cin.get();
        return -1;
    }

    pDoc->Release();

    CoUninitialize();

    return 0;
}


verwenden tu ich MSXML3. ich auch 6 versucht, aber so wirklich half mir das nicht weiter. ideen?

SteveKr

Frischling

Beiträge: 41

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

2

31.08.2008, 19:59

Hi,
Ich hab vor Urzeiten damit mal gearbeitet.
So hat es bei mir funktioniert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
IXMLDOMDocumentPtr docPtr;
CoInitialize(NULL);
docPtr.CreateInstance("Msxml2.DOMDocument");

// Dokument laden

docPtr->load("test.xml");

CoUninitialize();


mfg SteveKr
XNA.mag - Deutsche XNA-Seite mit Tutorials, Samples und Forum

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

01.09.2008, 08:19

Sicher dass es IID_IXMLDocument2 und nicht IID_IXMLDOMDocument2 heißen sollte?

P.S. So funktioniert es mit MSXML4 auf meinem Rechner:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
        if(FAILED(CoCreateInstance( CLSID_DOMDocument40, 
                                NULL, 
                                CLSCTX_INPROC_SERVER, 
                                IID_IXMLDOMDocument2,
                                (void**)&pXMLDoc)))
        {
            cout<<"Fehler beim laden der XML Datei"<<endl;
            Sleep(3000);
            return 0;
        }
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

01.09.2008, 08:50

das wirds wahrscheinlich sein, wenn ich wieder zu haus bin teste ich das mal.

EDIT: jup, funzelnuckelt!

Werbeanzeige