Xerces C++ - Laden, Lesen und speichern, alternativen?

Ich bin auf der Suche für eine Anleitung zum laden einer XML-Datei, Lesen Sie es, ändern Sie es und speichern Sie abschließend mit C++. Ich bin mit Linux Ubuntu und versucht, Xerces. Mit Google und viel Zeit, konnte ich nur laden Sie eine XML-Datei:

#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>

#include <iostream>

using namespace std;
using namespace xercesc;

int main (int argc, char* args[]) {

    try {
        XMLPlatformUtils::Initialize();
    }
    catch (const XMLException& toCatch) {
        char* message = XMLString::transcode(toCatch.getMessage());
        cout << "Error during initialization! :\n"
             << message << "\n";
        XMLString::release(&message);
        return 1;
    }

    XercesDOMParser* parser = new XercesDOMParser();
    parser->setValidationScheme(XercesDOMParser::Val_Always);
    parser->setDoNamespaces(true);    //optional

    ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
    parser->setErrorHandler(errHandler);

    const char* xmlFile = "demo.xml";

    try {
        parser->parse(xmlFile);
    }
    catch (const XMLException& toCatch) {
        char* message = XMLString::transcode(toCatch.getMessage());
        cout << "Exception message is: \n"
             << message << "\n";
        XMLString::release(&message);
        return -1;
    }
    catch (const DOMException& toCatch) {
        char* message = XMLString::transcode(toCatch.msg);
        cout << "Exception message is: \n"
             << message << "\n";
        XMLString::release(&message);
        return -1;
    }
    catch (...) {
        cout << "Unexpected Exception \n" ;
        return -1;
    }

    DOMNode* docRootNode;
// DOMNode* aNode;
    DOMDocument* doc;
    doc = parser->getDocument();
    docRootNode = doc->getDocumentElement();
    cout << docRootNode->getAttributes() << endl; //returns Hex



    delete parser;
    delete errHandler;
    return 0;
}

Wie ich Lesen kann, ein manipulieren der XML-Datei und schließlich speichern? Gibt es alternative Bibliotheken? (Ich habe versucht, tinyxml, aber die Dateien gibt Fehler zurück, wenn ich will, um es zu kompilieren)

  • Ich hoffe, Sie nutzen die neue Xerces 3.* die alte 2.7/2.8 ist mit Speicher-Lecks ganz über dem Platz
InformationsquelleAutor | 2010-01-24
Schreibe einen Kommentar