2009-06-23 12 views
2

Ich versuche, ein Programm zur Überprüfung von Nachrichten zu erstellen und möchte leicht modifizierbare Regeln erstellen, die für bestimmte Nachrichtentypen gelten. Aufgrund der Gefahr, dass sich die Regeln ändern, habe ich beschlossen, diese Validierungsregeln außerhalb des Objektcodes zu definieren.XML-Darstellung von C++ - Objekten

Ich habe eine grundlegende Schnittstelle erstellt, die eine Regel definiert und frage mich, was der beste Weg, um diese einfachen Daten zu speichern wäre. Ich wollte XML, aber es scheint, als wäre es zu schwer.

Jede Regel würde nur eine sehr kleine Menge von Daten benötigen (d. H. Art der Regel, Wert, anwendbare Maske, usw.).

Kennt jemand eine gute Ressource, die ich betrachten könnte, die eine ähnliche Funktionalität ausführen würde. Ich würde mich lieber nicht zu sehr mit XML beschäftigen, wenn es um ein Problem geht, das scheinbar nur eine Teilmenge der Funktionalität benötigt, die ich in den meisten Beispielen, in denen ich mich befinde, sehe.

Wenn ich ein kurzes Beispiel zu untersuchen finde, wäre ich in der Lage zu entscheiden, ob ich einfach mit einer flachen Datei gehen soll oder nicht.

Vielen Dank im Voraus für Ihre Eingabe!

Antwort

1

Persönlich, für kleine, leicht veränderbare XML finde ich TinyXML eine ausgezeichnete Bibliothek zu sein. Sie können jede Klasse dazu bringen, ihr eigenes Format zu verstehen, sodass Ihre Objekthierarchie direkt im XML-Code dargestellt wird.

Wenn Sie jedoch nicht glauben, dass Sie XML benötigen, sollten Sie einen leichteren Speicher wie yaml verwenden. Ich finde es viel einfacher, die zugrunde liegenden Daten zu verstehen, zu modifizieren und die Funktionalität zu erweitern.

(Auch boost::serialization hat ein XML-Archiv, aber es ist nicht das, was ich leicht modifizierbar nennen würde)

+0

TinyXML, wusste nicht über dieses, ich muss das überprüfen –

+0

TinyXML scheint eine gute Reihe von Beispielen zu haben, die ähnlich sind, was ich tun möchte. Ich werde das morgen überprüfen, um zu sehen, ob ich nicht einen schnellen Proof of Concept zusammenstellen kann. Danke für die schnelle Antwort! – Brian

1

Die einfachste ist eine flache Datei zu verwenden, entwickelt, um einfach zu sein, die C zu analysieren mit ++ Operator >> . Nur einfache Token, die durch Leerzeichen voneinander getrennt sind.

+0

Es ist sicherlich die einfachste und wird mein Fallback-Plan sein, wenn ich eine POC nicht schnell hochfahren kann. Vielen Dank für Ihre Meinung! – Brian

1

Nun, wenn Sie wollen, dass Ihre Regeln für Menschen lesbar sind, ist XML der Weg zu gehen, und Sie können es schön mit C++ unter Verwendung xerces verbinden. Wenn Sie Leistung und/oder Größe wünschen, können Sie die Daten als Binärdateien mit einfachen Strukturen speichern.

+0

Ja, ich möchte definitiv, dass es lesbar und ein bisschen selbstdokumentierender ist als eine Standard-Wert-Paar- oder Leerraum-getrennte Datei - wenn es nicht zu viel Aufwand sein würde. Es sieht so aus, als ob ich in der Lage sein werde, mindestens genug zusammenzuarbeiten, um den Grad der Anstrengung zu messen, dies in XML umzusetzen. Ich werde auch Xerces betrachten. Danke! – Brian

1

Eine andere Möglichkeit, dies zu implementieren, wäre, Ihre Regeln im XML-Schema zu definieren und dann ein XML-Datenbindungstool zu erstellen, das das entsprechende C++ - Objektmodell zusammen mit dem XML-Parsing- und Serialisierungscode generiert. Ein solches Instrument (das ich zufällig zu arbeiten) ist CodeSynthesis XSD:

http://www.codesynthesis.com/products/xsd/

Für eine 2-Minuten Überblick über die Idee, finden Sie in der „Hallo Welt“ Beispiel in C++/Baum-Mapping-Dokumentation.

Verwandte Themen