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.