Zum Inhalt springen

SAX, DOM, JDOM was benutzen??


Empfohlene Beiträge

Geschrieben

Hallo,

folgendes.. Ich habe vor Daten aus mehreren XML-Dateien aus zu lesen welche auch etwas größer werden könnten. Diese werden dann aufbereitet und später über eine andere Schnittstelle in eine Datenbank geschrieben.

An diesen XML-Dateien möchte ich nichts verändern sondern nur lesen und deren Inhalte verarbeiten... Dann habe ich aber auch eine XML-Datei wo eine gewisse Konfiguration enthalten ist die ich nicht nur auslese sondern auch über Java verändern kann/will/muss.

Ich bin noch nicht lange in der XML-Schiene drin und bin mir etwas unschlüssig welchen Parser ich nun nehmen soll. Und ja ich habe die Suche benutzt aber nichts gefunden was mir in diesem Fall weiter hilft.

Es soll nur ein Parser sein... SAX fällt ja eigentlich schon mal weg oder?? weil ich eben eine besagte Datei verändern will/kann. Oder gibt es da Tricks wie ich doch Dateien verändern kann???

DOM hat Probleme mit größeren Dateien was aber in diesem Fall ebenfalls vorkommen kann..

JDOM ist doch ziemlich an DOM angelehnt... Habe mich aber noch nicht weiter damit beschäftigt..

Was nehme ich nun wenn ich mich für einen entscheiden muss???

Danke schon einmal für eure Antworten..

:)

Geschrieben
Es soll nur ein Parser sein... SAX fällt ja eigentlich schon mal weg oder?? weil ich eben eine besagte Datei verändern will/kann. Oder gibt es da Tricks wie ich doch Dateien verändern kann???
Das eine hat nichts mit dem anderen zu tun. Um eine Datei zu verändern musst du sie zunächst einmal einlesen - das kann auf die verschiedensten Arten passieren. In der Regel verwenden aber auch alle DOM-Parser intern SAX zum Auslesen der Daten. Hier wird dann eben als eigentlich Verarbeitung eines Elements (ohne Verarbeitung ist SAX witzlos) ein DOM Tree erzeugt.

Zu deinem Problem: Wenn du Daten verändern möchtest wirst du nicht drumrumkommen sie als DOM einzulesen und als solches zu verarbeiten. Bei sehr großen Dateien kann das durchaus stückweise erfolgen, indem du über SAX einen bestimmten Bereich des Dokumentes einliest (beispielsweise 10 Elemente), hieraus einen DOM Tree erzeugst, die Verarbeitung dieses Teilbaumes startest, die nächsten 10 Element einliest, und so weiter.

Wenn du aber eine komplette Datei ändern und wieder speichern willst wirst du (ohne große Verrenkungen machen zu müssen) nicht drumrumkommen auch die komplette Datei in einem DOM Tree zu laden.

JDOM ist doch ziemlich an DOM angelehnt... Habe mich aber noch nicht weiter damit beschäftigt..
JDOM ist DOM. DOM ist kein Produkt sondern eine Technologie - eben XML Date(ie)n in einer Objektstruktur abzubilden. Der Unterschied zwischen JDOM und W3C DOM ist das einfachere und intuitivere Handling der Objekte - mehr aber auch nicht.
Geschrieben

Hallo,

danke für deine Antwort... Ich verwende jetzt dom4j.. Ich konnte schon damit ein wenig testen und es klappt so wie ich mir das vorstelle..

Danke für den Tipp mit dem einlesen von SAX und Baumbilden durch DOM... Ich denke das werde ich so durch bekommen..

Die Datei die ich komplett auslesen und evtl. wieder verändern werde ist auch nicht so groß das es jetzt dramatisch wäre sie komplett von DOM auslesen zu lassen.. Nur bei den anderen Dateien wo ich die Daten für die DB heraus lesen muss und welche schon eine enorme Größe erreichen können ist dein Tipp am besten.

Danke :D

Geschrieben

@Perdi

Hast du schon einmal was von StAX gehört??? Es soll genau das machen was du beschrieben hast. Ich versuche gerade mich etwas ein zu lesen darin.. Wäre vielleicht eine bessere Variante...

:)

Geschrieben
Hast du schon einmal was von StAX gehört?
Gehört, gefunden und kurz angesehen. Sieht ganz nett aus, aber das was ich - bisher - mit XML Verarbeitung erreicht habe ging auch ohne. Einen Objektbaum zu erstellen ist bei einer SAX-Verarneitung nicht wirklich schwierig. DocumentHandler implementieren, zwischendurch die Verarbeitung antriggern - insgesamt vielleicht 15 bis 20 Zeilen Code. Dafür tue ich mir kein weiteres Framework an.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...