xml Datei erstellen mit C erstellen



  • Guten morgen.

    Ich schreibe heute meinen ersten Beitrag im Forum und hoffe mal, dass ich nicht gleich gegen ein dutzend Konventionen verstoße...

    Hier meine Problemstellung:

    Ich möchte eine xml Datei mit C erstellen und nutze den Xerces DOM Parser. Hierzu habe ich mir auch das mitgelieferte Tutorial zur Hand genommen:

    #include <xercesc/parsers/XercesDOMParser.hpp>
    #include <xercesc/dom/DOM.hpp>
    #include <xercesc/dom/DOMImplementation.hpp>
    #include <xercesc/dom/DOMImplementationRegistry.hpp>
    #include <xercesc/sax/HandlerBase.hpp>
    #include <xercesc/util/XMLString.hpp>
    #include <xercesc/util/PlatformUtils.hpp>
    #include <xercesc/util/XercesDefs.hpp>
    #include <xercesc/dom/DOMImplementationSource.hpp>
    #include <xercesc/dom/DOMImplementationList.hpp>
    
    #include <iostream>
    
    using namespace std;
    using namespace xercesc;
    
    int main(void) {
        XMLCh tempStr[100];
    
        XMLString::transcode("Range", tempStr, 99);
        DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr, 0);
    
        XMLString::transcode("root", tempStr, 99);
        DOMDocument*   doc = impl->createDocument(0, tempStr, 0);
        DOMElement*   root = doc->getDocumentElement();
    
        XMLString::transcode("FirstElement", tempStr, 99);
        DOMElement*   e1 = doc->createElement(tempStr);
        root->appendChild(e1);
    
        XMLString::transcode("SecondElement", tempStr, 99);
        DOMElement*   e2 = doc->createElement(tempStr);
        root->appendChild(e2);
    
        XMLString::transcode("aTextNode", tempStr, 99);
        DOMText*       textNode = doc->createTextNode(tempStr);
        e1->appendChild(textNode);
    
        // optionally, call release() to release the resource associated with the range after done
        DOMRange* range = doc->createRange();
        range->release();
    
        // removedElement is an orphaned node, optionally call release() to release associated resource
        DOMElement* removedElement = root->removeChild(e2);
        removedElement->release();
    
        // no need to release this returned object which is owned by implementation
        XMLString::transcode("*", tempStr, 99);
        DOMNodeList*    nodeList = doc->getElementsByTagName(tempStr);
    
        // done with the document, must call release() to release the entire document resources
        doc->release();
    }
    

    Dabei erhalte ich folgende Fehler:

    Zeile 24: no matching function for call to `xercesc_3_1::DOMImplementationRegistry::getDOMImplementation(XMLCh[100], int)'

    Zeile 47: invalid conversion from `xercesc_3_1::DOMNode*' to `xercesc_3_1::DOMElement*'

    Ich programmiere unter Linux.

    Vielleicht gibt es ja auch eine einfachere Möglichkeit diese xml Datei zu erstellen?

    Vielen Dank schon mal im Voraus 🙂



  • Dir ist schon klar dass das C++ ist und kein C, oder?

    Und ich kenne mich mit Xerces nicht aus aber ich würde das anhand der Dokumentation lösen:

    DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
    

    und

    DOMNode* removedElement = root->removeChild(e2);
    


  • Dieser Thread wurde von Moderator/in Marc++us aus dem Forum ANSI C in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply