2009-02-06 17 views
8

Von allen Bibliotheken für die Eingabe und Ausgabe von XML mit Java, unter welchen Umständen ist Commons-Digester das Werkzeug der Wahl?Wann und warum würden Sie Apache commons-digester verwenden?

+0

Eine etwas späte Antwort: Apache Digester ist kein vollständiger Parser und kann manchmal sehr langsam sein. Es gibt eine neue Option namens Extended vtd-xml, die xml-Dokumente bis zu 256 GB verarbeiten kann, es unterstützt vollständige Xpath- und mem-Karten –

Antwort

8

Vom digester wiki

Warum Digester verwenden?

Digester ist eine Schicht über der SAX Xml-Parser-API, um Verarbeitung von XML-Eingabe zu erleichtern. Insbesondere Kocher macht es einfach zu erstellen und initialisieren eine Baum von Objekten basierend auf eine XML-Eingabedatei.

Die häufigste Verwendung für Digester ist Prozess xml-Format Konfiguration Dateien, einen Baum von Objekten auf der Grundlage dieser Informationen zu bauen.

Beachten Sie, dass Faul erstellen und wahre Objekte initialisieren, dh Dinge , die auf die Geschäftsziele von die Anwendung beziehen und haben echte Verhaltensweisen. Viele andere Tools haben ein anderes Ziel : ein Modell die Daten in der Eingabe XML-Dokument zu erstellen, wie ein W3C-DOM tut aber ein wenig mehr freundlich.

und

Und im Gegensatz zu Werkzeugen, die Klassen generieren, können Sie Ihre Anwendung Klassen zuerst schreiben, dann später entscheiden Digester verwenden sie aus einer XML-Eingabedatei zu erstellen. Das Ergebnis ist, dass Ihre Klassen echte Klassen mit echtem Verhalten sind, dass passieren, aus einer XML-Datei initialisiert werden, anstatt einfache "Strukturen" , die nur Daten halten.

Als Beispiel dafür, was es für nicht verwendet wird:

Wenn jedoch Sie suchen eine direkte Darstellung des Eingang XML-Dokuments, als Daten eher als echte Objekte, dann Kocher ist nicht für dich; DOM, jDOM oder andere mehr Direct-Binding-Tools werden besser geeignet sein.

So Digester wird XML direkt in Java-Objekte zuordnen. In einigen Fällen ist das nützlicher, als die Baumstruktur durchlesen und Optionen auswählen zu müssen.

1

Wenn Sie "echte" Objekte aus XML erstellen und initialisieren möchten, verwenden Sie einen anständigen Bean-Container, wie ihn Spring bereitstellt.

Auch das Einlesen der XML und die Verarbeitung mit XPath oder die Verwendung von Java/XML-Binding-Tools wie Castor sind gut und vielleicht mehr Standardalternativen.

Ich habe mit dem Digester bei der Verwendung von Struts gearbeitet, aber es scheint, dass es von anderen Tools und Frameworks für die möglichen Anwendungen übertroffen wurde.

4

Meine erste Einstellung wäre "nie" ... aber vielleicht hat sie ihren Platz. Ich stimme eljenso zu, dass es vom Wettbewerb übertroffen wurde.

Also für eine gute effiziente und einfache Objektbindung/Mapping, JAXB ist viel besser, oder XStream. Viel bequemer und noch schneller.

Verwandte Themen