Frage

Ich baue einen konformen und Validieren von XML-Parser in C ++ und versuche, es leichtgewichtig für den Einsatz in Pocket PC zu machen.

Am Anfang habe ich beschlossen, einige „Ereignisse“ zu meinen Parser wie SAX hinzufügen tut, um Elemente zu informieren, Verarbeitungshinweise, etc.

Diese Ereignisse, die von einer abgeleiteten Klasse getroffen werden, die die DOM-Struktur des XML aufbaut.

Meine Zweifel werden angezeigt, wenn in erster Linie Einheiten zu behandeln versuchen und ihre Auflösung (das im Inneren Element, pi und Kommentare, wenn definiert enthalten kann).

Beispiel kann ich eine XMLEntityRef Klasse erstellen, die zu einem gewissen XmlEntity verweist definiert in einigen XMLDocType Objekt wie .NET system.xml Parser tut.

Wie ich weiß, für die meisten Zwecke benötigt eine Anwendung ein Element zu wissen, seinen Inhalt, seine jeweiligen Attribute und ihre jeweiligen Werte ... nur Strings ... es sich nicht, wenn der Elementgehalt von cdata Objekte gebildet wird , Entity-Referenzen und / oder Klartext ... das gleiche gilt Wert zuzuschreiben.

Also, meine Frage ist folgende: Was ist der Nutzen für jedes XML-Objekt auf eine Anwendung geben, wie es scheint, und es (oder eine Hilfsklasse) zu bauen, für zB den resultierenden Attributwert im Stich gelassen von Texten verketten und gelöst Entitätsverweise?

Wenn ich eine Umfrage machen, bitte beantworten: Ist Ihre Anwendung über CDATA-Tags kennen und wo sie in der XML-Datei befinden, oder Sie machen die Dinge einfach ... Sie den vollständigen Inhalt Wert wissen wollen von ein Element in einem String, ohne sich Gedanken darüber, wie es gebaut wird?

Mit freundlichen Grüßen, Mauro H. Leggieri

War es hilfreich?

Lösung

  

Ich baue eine Conforming und Validieren von XML-Parser in C ++ und versuche, es leichtgewichtig zu machen

Es gibt nicht so etwas wie eine leichte konform (nie Validierung dagegen) Parser. Um ein konformer Parser Sie haben alle das Zeug zu verstehen, die in einer DTD externen Teilmenge gehen, die in der Tat knorrige Arbeit. Es ist eine Schande, dass die XML-Spezifikation mit allen SGML-DTD belastet crud beendet, aber wir sind mit ihm jetzt stecken.

  

ist Ihre Anwendung über CDATA-Tags kennen und wo sie in der XML-Datei befinden

Normalerweise nicht. DOM Level 3 LS erfordert, dass CDATA Abschnitte einen CDATASection Knoten im DOM standardmäßig gehalten werden, aber so gut wie keine Anwendung kümmert.

(Wenn die Frage ist, mein Anwendung dann ja, weil mein Anwendung ist ein Template-System, das CDATA-Abschnitte hält, wo sie waren. Aber immer noch.)

  

Meine Zweifel erscheinen, wenn man versucht in erster Linie Einheiten zu behandeln

Gott ja. Entity-Referenzen sind eine totale Katastrophe. Eine DOM-Implementierung Unterstützung sie in eine Weise, die mit DOM Level 3 Core-kompatibel ist / LS ist sehr, sehr kompliziert. Vermeiden Sie, wenn überhaupt möglich.

Andere Tipps

im Allgemeinen ist xml nicht leicht. Sie sind besser dran mit JSON.

Wenn Sie einen Parser baut Ich glaube nicht, sollten Sie etwas über vermuten, wie Anwendungen die xml konsumieren, sondern bieten die granulare Ebene von Daten für jeden XML-Knoten eines Maximum an Flexibilität zu bieten. Während dies mehr Arbeit seitens des Verzehrs von Anwendungen benötigen, werden sie in der Lage sein zu tun, was sie müssen. Viel Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top