Ich habe kürzlich eine Reihe von XML-Bibliotheken speziell für die Generierung von XML-Code geprüft.
Zusammenfassung: Ich habe mich für Folgendes entschieden TinyXML++ .
TinyXML++ hat eine anständige C++-Syntax, basiert auf dem ausgereiften TinyXML C-Bibliotheken, ist frei und quelloffen (MIT-Lizenz) und klein. Kurz gesagt, es hilft, die Arbeit schnell zu erledigen. Hier ist ein kurzer Ausschnitt:
Document doc;
Node* root(doc.InsertEndChild(Element("RootNode")));
Element measurements("measurements");
Element tbr("TotalBytesReceived", 12);
measurements.InsertEndChild(tbr);
root->InsertEndChild(measurements);
Das ergibt:
<RootNode>
<measurements>
<TotalBytesReceived>12</TotalBytesReceived>
</measurements>
</RootNode>
Ich bin sehr zufrieden damit.
Ich habe viele andere getestet; hier sind einige der besseren Kandidaten:
Xerces : Der King-Daddy. Macht alles (insbesondere in Kombination mit Xalan ), ist aber schwerfällig und zwingt dem Benutzer die Speicherverwaltung auf.
RapidXML : Hervorragend zum Parsen geeignet (es ist ein In-situ-Parser und ist schnell ), aber nicht gut für die Generierung, da das Hinzufügen von Knoten zum DOM Speicherverwaltung erfordert.
Boost.XML (Vorschlag): Sieht aus wie großartig - leistungsfähige, ausgezeichnete C++-Syntax. Allerdings hat es den Review-Prozess noch nicht durchlaufen, wird nicht unterstützt und die Schnittstelle kann sich durchaus ändern. Ich habe es trotzdem fast benutzt. Ich freue mich auf seine Aufnahme in Boost.
Libxml ( ++ ): Sehr gut; leistungsstark, anständige Syntax. Aber es ist ziemlich groß, wenn Sie nur Erzeugung von XML und ist mit der glibmm-Bibliothek (für ustring) verbunden. Wenn wir nur auf Linux (wie Sie?) würde ich ernsthaft in Betracht ziehen.
XiMOL : Einzigartige Stream-basierte Bibliothek. Dies war ein wenig zu einfach für unsere Bedürfnisse, aber für grundlegende XML-Generierung können Sie es recht nützlich finden. Die Stream-Syntax ist recht ordentlich.
Hoffentlich ist etwas Nützliches dabei!
0 Stimmen
Ich habe verwendet libxml++ um XML zu generieren, aber ich kann nicht garantieren, dass es der einfachste Weg ist! :-)