c++ - open - xerces xml writer




Was ist der beste offene XML-Parser für C++? (8)

Diese Frage hat hier bereits eine Antwort:

Ich suche nach einem einfachen, sauberen, korrekten XML-Parser, um in meinem C ++ Projekt zu verwenden. Soll ich mein eigenes schreiben?


Ich bin ein C ++ Neuling und nachdem ich ein paar verschiedene Vorschläge auf dieser Seite versucht habe, muss ich sagen, dass ich pugixml am meisten pugixml . Es hat leicht verständliche Dokumentation und eine API auf hohem Niveau, die alles war, was ich suchte.


Ich mag den Gnome-XML-Parser. Es ist Open Source (MIT-Lizenz, also können Sie es in kommerziellen Produkten verwenden), schnell und hat DOM und SAX-basierte Schnittstellen.

http://xmlsoft.org/


TinyXML eignet sich am besten für einfache XML-Arbeit. Wenn Sie jedoch weitere Funktionen benötigen, testen Sie Xerces über das Apache-Projekt. Gehen Sie auf die folgende Seite, um mehr über die Funktionen zu erfahren.

http://xerces.apache.org/xerces-c/


TinyXML und auch Boost.PropertyTree. Letzteres erfüllt nicht alle offiziellen Anforderungen, ist aber sehr einfach.


Verwenden Sie TinyXML nicht, wenn Sie sich Gedanken über die Effizienz / Speicherverwaltung machen (es neigt dazu, viele kleine Blöcke zuzuweisen). Mein persönlicher Favorit ist RapidXML .


Wie wäre es mit RapidXML ? RapidXML ist ein sehr schneller und kleiner XML-DOM-Parser, der in C ++ geschrieben ist. Es ist in erster Linie für eingebettete Umgebungen, Computerspiele oder andere Anwendungen gedacht, bei denen die verfügbare Speicher- oder CPU-Verarbeitungsleistung einen hohen Stellenwert hat. RapidXML ist unter der Boost-Softwarelizenz lizenziert und der Quellcode ist frei verfügbar.

Eigenschaften

  • Parsing-Geschwindigkeit (einschließlich DOM-Baumbildung) nähert sich der Geschwindigkeit der Strlen-Funktion, die auf denselben Daten ausgeführt wird.
  • Auf einer modernen CPU (ab 2008) beträgt der Parser-Durchsatz etwa 1 Milliarde Zeichen pro Sekunde. Siehe Leistung im Online-Handbuch.
  • Geringer Speicherbedarf des Codes und erstellte DOM-Bäume.
  • Eine Nur-Header-Implementierung, die den Integrationsprozess vereinfacht.
  • Einfache Lizenz, die die Nutzung für fast jeden Zweck erlaubt, sowohl kommerzielle als auch nicht-kommerzielle, ohne jegliche Verpflichtungen.
  • Unterstützt UTF-8 und teilweise UTF-16, UTF-32-Kodierungen.
  • Portabler Quellcode ohne Abhängigkeiten außer einer sehr kleinen Teilmenge der C ++ - Standardbibliothek.
  • Diese Teilmenge ist so klein, dass sie leicht manuell emuliert werden kann, wenn die Verwendung einer Standardbibliothek unerwünscht ist.

Einschränkungen

  • Der Parser ignoriert DOCTYPE-Deklarationen.
  • Es gibt keine Unterstützung für XML-Namespaces.
  • Der Parser prüft nicht auf Zeichengültigkeit.
  • Die Schnittstelle des Parsers entspricht nicht der DOM-Spezifikation.
  • Der Parser überprüft die Attributeindeutigkeit nicht.

Quelle: wikipedia.org://Rapidxml

Abhängig von Ihrer Verwendung können Sie eine XML-Datenbindung verwenden? CodeSynthesis XSD ist ein XML Data Binding Compiler für C ++, der von Code Synthesis entwickelt wurde und unter der GNU GPL und einer proprietären Lizenz zweifach lizensiert ist. Bei einer XML-Instanzspezifikation (XML-Schema) generiert es C ++ - Klassen, die das angegebene Vokabular sowie den Parsing- und Serialisierungscode darstellen.

Eine der einzigartigen Funktionen von CodeSynthesis XSD ist die Unterstützung von zwei verschiedenen XML-Schema-zu-C ++ - Zuordnungen: In-Memory C ++ / Tree und stream-orientierter C ++ / Parser. Das C ++ / Tree-Mapping ist ein traditionelles Mapping mit einer baumähnlichen, speicherinternen Datenstruktur. C ++ / Parser ist ein neues, SAX-ähnliches Mapping, das die in XML-Instanzdokumenten gespeicherten Informationen als eine Hierarchie vokabularspezifischer Analyseereignisse darstellt. Im Vergleich zu C ++ / Tree ermöglicht die C ++ / Parser-Zuordnung die Verarbeitung großer XML-Dokumente, die nicht in den Arbeitsspeicher passen, eine stream-orientierte Verarbeitung oder die Verwendung einer vorhandenen In-Memory-Repräsentation.

Quelle: wikipedia.org:/:CodeSynthesis XSD



TiCPP ist eine "mehr c ++" Version von TinyXML.

"TiCPP" ist die Abkürzung für den offiziellen Namen TinyXML ++. Es ist eine völlig neue Schnittstelle zu TinyXML ( http://www.grinninglizard.com/tinyxml/ ), die VIELE der C ++ - Stärken verwendet. Vorlagen, Ausnahmen und viel bessere Fehlerbehandlung. Es ist auch vollständig in Doxygen dokumentiert. Es ist wirklich cool, weil diese Version Sie auf die gleiche Weise wie zuvor interface tiny oder Sie können wählen, um die neuen 'Ticpp' Klassen zu verwenden. Alles, was Sie tun müssen, ist TIXML_USE_TICPP zu definieren. Es wurde in VC 6.0, VC 7.0, VC 7.1, VC 8.0, MinGW gcc 3.4.5 und in Linux GNU gcc 3+ getestet





open-source