expertenaustausch > comp.lang.* > comp.lang.delphi.misc

Wolfgang Koranda (08.09.2005, 09:46)
Hi!

Nachdem ich gegoogelt habe und nichts brauchbares dabei war stelle ich euch
die
Frage und hoffe ihr könnt mir weiterhelfen.

Ich habe ein 30MB XML File welches ich nun nach einigen Attributen filtern
und
in ein Textfile schreiben muß. Kennt ihr eine freie XML Komponente für D5
die mir nacheinander Datensaetze liefert, wie von einer Datenbank, und die
auch
mit so "großen" Files umgehen kann. Beispiel dazu wäre schönl.
Danke euch.

lg Wolfgang Koranda
Marian Aldenhövel (08.09.2005, 10:50)
Hi,

> Ich habe ein 30MB XML File welches ich nun nach einigen Attributen filtern
> und in ein Textfile schreiben muß.


Bist Du sicher, daß Du dafür ein eigenes Programm schreiben willst?
Wahrscheinlich täte es eine Transformation per XSLT und einem Programm
wie Saxon.

Wenn es doch selbst machen willst solltest Du als erstes wissen, daß
XML-Leser/Parser/Verarbeiter in zwei Hauptgeschmacksrichtungen existieren:
DOM und SAX.

DOM-Parser lesen ein XML-Dokument und bauen eine navigierbare Struktur
im Speicher auf, das Document Object Model von dem sie ihren Namen haben.
In dieser Struktur kann man nun herumlaufen, sie auch ändern, und
gegebenenfalls - für Dich nicht interessant - am Ende wieder rausschreiben.

SAX-Parser parsen nur. Sie lesen die XML-Datei und lösen beim Fund bestimmter
Elemente Ereignisse aus. Es ist Aufgabe der Anwendung diese Ereignisse zu
behandeln und sich daraus ein Bild der Daten zu schaffen.

DOM ist also mehr etwas für "Lesen-Bearbeiten-Speichern", das ganze Dokument
muss in den Speicher. SAX ist eher "Lesen-und-dabei-Lernen", die Größe
des Dokuments stellt dann keine Schranke dar.

DOM ist einfacher zu verwenden weil man eben alles wahlfrei im Zugriff hat.
Bei SAX muss man etwas mehr denken um an den richtigen Stellen die richtige
Menge Nutzlast aus den diversen Ereignispunkten zu extrahieren, sich
gerade genug Kontext zu bewahren um sich zurechtzufinden und nicht in
Sammelwut zu einem eigenen DOM zu "entarten" (DOM-Implementationen setzen
irgendwie immer auf einer SAX-Implementation auf).

Zurück zu Deiner Frage:

Deine Aufgabe klingt nach einer für SAX. Du suchst also nach "SAX Parser
Delphi". Gugel findet in diesem Moment 31000 Treffer, auf der ersten
Seite findet sich wie üblich schon genug interessantes.

Gib' aber auch Saxon eine Chance. Auch wenn Du dafür ein wenig XSLT
lernen musst bist Du wahrscheinlich schneller fertig.

Ciao, MM
Wolfgang Koranda (08.09.2005, 11:47)
lg Wolfgang
"Marian Aldenhövel" <marian> schrieb im Newsbeitrag
news:hpm1
[..]
> Gib' aber auch Saxon eine Chance. Auch wenn Du dafür ein wenig XSLT
> lernen musst bist Du wahrscheinlich schneller fertig.
> Ciao, MM


Hi!

Danke für die ausführliche und schnelle Antwort.
Nachdem ich nicht unbedingt weitere Codezeilen schreiben muß werde
ich mir Saxon ansehen ob ich damit zurechtkomme.

mfg Wolfgang Koranda
Ähnliche Themen