[c++] Beste XML-Serialisierungsbibliothek für eine MFC C ++ - App


3 Answers

Das ist ein uraltes Problem. Ich war der Teamleiter des Entwicklungsteams mit den kritischsten Pfadabhängigkeiten des größten Softwareprojekts der Welt in den Jahren 1999 und 2000, und genau dieses Problem war der Schwerpunkt meiner damaligen Arbeit. Ich bin überzeugt, dass das Rad von mehreren Ingenieuren erfunden wurde, die nicht wussten, dass andere es bereits erfunden hatten. Das Gleiche gilt für die XML-Datenbindung in C ++. Ich habe es auch erfunden und perfektioniere es seit über 10 Jahren in verschiedenen Projekten. Ich habe eine Lösung, die die hier aufgeführten Probleme und einige zusätzliche Probleme behandelt, die wiederholt auftreten:

  1. XML-Aktualisierungen Dies ist die Möglichkeit, eine Teilmenge von XML in ein vorhandenes Objektmodell erneut anzuwenden. In vielen Fällen ist das XML an indizierte Objekte gebunden, und wir können es uns nicht leisten, für jedes Update neu zu indizieren.

  2. COM- und CORBA-Schnittstellenverwaltung. In der gleichen Hinsicht, dass die XML-Datenbindung durch objektorientierte Praktiken automatisiert werden kann - ebenso wie die Instanzen von Schnittstellenobjekten, die diese Daten der Anwendungsschicht bereitstellen.

  3. Statusverfolgung Die Anwendung muss oft zwischen einem leeren Wert und einem fehlenden Wert unterscheiden - beide erzeugen eine leere Zeichenfolge. Dies bietet die Validierung zusammen mit der Datenbindung.

Der Quellcode verwendet die am wenigsten restriktive Lizenz - weniger, so dass GPL. Das Projekt wird von hier aus unterstützt und verwaltet:

http://www.codeproject.com/KB/XML/XMLFoundation.aspx

Jetzt, da es das Jahr 2010 ist, glaube ich, dass niemand sonst versuchen wird, das Rad neu zu erfinden, weil es einige gibt, aus denen man wählen kann. IMHO - dieses Rad ist die am meisten polierte und gut abgerundete Implementierung verfügbar.

Genießen.

Question

Ich habe eine Anwendung, geschrieben in C ++ mit MFC und Stingray-Bibliotheken. Die Anwendung arbeitet mit einer Vielzahl von großen Datentypen, die alle derzeit serialisiert sind, basierend auf MFC Document / View serialisierte abgeleitete Funktionalität. Ich habe auch Optionen für die XML-Serialisierung basierend auf den Stingray-Bibliotheken hinzugefügt, die DOM über das Microsoft XML SDK implementieren. Während es einfach ist, die Leistung zu implementieren, ist es schrecklich, in dem Ausmaß, dass es auf etwas anderem als sehr kleinen Dokumenten unbrauchbar ist.

Welche anderen XML-Serialisierungstools würden Sie für dieses Szenario empfehlen? Ich will DOM nicht, da es ein Gedächtnisschwund zu sein scheint, und ich beschäftige mich bereits mit großen Daten im Speicher. Im Idealfall möchte ich einen Streaming-Parser, der schnell und einfach mit MFC zu verwenden ist. Mein derzeitiger Spitzenreiter ist Expat, der schnell und einfach ist, aber viel Klasse für Klasse Serialisierungscode hinzufügen müsste. Irgendwelche anderen effizienten und einfacher zu implementierenden Alternativen da draußen, die Leute empfehlen würden?







Das gSOAP-Toolkit serialisiert native C- und C ++ - Daten automatisch von / nach XML und unterstützt die vollständige XML-Schema-Spezifikation durch XML-Datenbindungen:

gSOAP SourceForge Projekt

Es hat sich seit 1999 zu einer bedeutenden Codebasis mit Codegenerierungswerkzeugen und Bibliotheken entwickelt. Es unterstützt viele Datenbindungs- und Anpassungsfunktionen, was besonders wichtig für die Zuordnung von XML-Schematypen zu / von C- und C ++ - Typen ist. Es kann alle C / C ++ - Typen und auch STL-Container, Containervorlagen und zyklische Datenstrukturen serialisieren. Es wurde in der W3C Schema Patterns for Databinding-Arbeitsgruppe verwendet (mit 100% Schema-Musterabdeckung seit Jahren). Es gibt eine aktive Open-Source-Benutzerbasis und die gSOAP-Entwicklungsfunktionalität wurde in vielen Industrieprojekten und Fortune-100-Unternehmen verwendet, um SOAP / XML-Infrastrukturen zu entwickeln.




Wir verwenden Xerces-C ++ . Es war einfach einzurichten und die Leistung ist gut genug, so dass wir nicht über Änderungen nachdenken müssen. Wir sind jedoch nicht XML-schwer.

Ich habe mir einen Podcast von Scott Hanselman (aus Hansel Minutes ) angehört, in dem die XML-Performance von MSXML und XSLT diskutiert wird.




Related



Tags

c++ c++   xml   mfc