[linux-l] XML

Guntram Trebs gunni at mathematik.hu-berlin.de
So Mai 11 23:28:23 CEST 2003


On 11 May 2003, Olaf Radicke wrote:

> Ich bin gerade dabei mir selber einen kleinen
> XML-Parser in C++ zu schreiben, welcher meine
> Conf-Datein lesen soll.
>
> Jetzt will ich vermeiden, das ich in meinen XML-
> Dateien Fehler habe. Gibt es ein XML-Debugger
> oder irgend was was mir sagt ob meine XML's
> "wohlgeformt" sind.

XML-Parser gibt es für jede vernünftige Sprache.

Im Prinzip bräuchtest Du nicht mal Deinen XML-Parser selber zuschreiben.

Bei den Dingern gibt es (mindestens) zwei verschiedene Typen.

Die einen arbeiten mit callback-Funktionen, also du sagst dem Parser:
Wenn ein neues Tag geparst wird rufe die Funktion auf und übergib tag-Name
und ein Array mit den Attributen.
Wenn ein Tag endet, rufe die Funktion auf und übergib den Tag-Namen.
Wenn Text geparst wird, rufe die Funktion auf.
Wenn ein Fehler auftritt, rufe die Funktion auf.

Die Funktionen mußt Du selber schreiben. Dann sagst Du dem Parser, was
geparst werden soll und er ruft der Reihe nach Deine Funktionnen auf.

Der andere Typ baut aus Deinem XML eine Array- oder Objekt-Struktur, durch
die du dich durchhangeln kannst.


Parser für XML sind expat (http://sourceforge.net/projects/expat/), der
ist vom ersten Typ.

Dann gibt's noch xerces und libxml.

libxml ist auf http://www.xmlsoft.org/.

Auf http://www.xmlsoft.org/ ist auch ein Diagramm, wo man sieht, was die
xml-implementationen können zusammen mit einem Benchmark-Ergebnis.

xerces scheint es nur für c++ zu geben. (http://xml.apache.org/)
xerces ist aber laut dem Diagramm der einzige der drei, der validieren
kann.

Wenn Du Deine XML-Dateien gegen eine DTD checken mußt, mußt Du anscheinend
xerces verwenden, wenn Du nur checken mußt, aber keine DTD entworfen hast,
kannst Du auch die anderen beiden verwenden.

In den meisten Script-Sprachen gibt es Module, die Dir den Zugriff auf die
3 Biblitheken erlauben.

mfg,
guntram





Mehr Informationen über die Mailingliste linux-l