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?
Antwort
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.
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.
- 1. Wann würden Sie PendingIntent verwenden?
- 2. Wann würden Sie XamlServices.Transform() verwenden?
- 3. Wann würden Sie Generische Sammlungen nicht verwenden?
- 4. Wann würden Sie GUIDs als Primärschlüssel verwenden?
- 5. Wann würden Sie Delegierte in C# verwenden?
- 6. Warum würden Sie Umask verwenden?
- 7. Warum würden Sie string.toString() verwenden?
- 8. Was ist SAPI und wann würden Sie es verwenden?
- 9. Wann IEquatable verwenden und warum
- 10. Wann würden Sie einen Mutex ohne Arc verwenden?
- 11. Wann würden Sie den Zugriffsmodifizierer "protected internal" verwenden?
- 12. Wann würden Sie XML über JSON für Ajax verwenden?
- 13. Wann würden Sie das Mediator Design Pattern verwenden?
- 14. Wann würden Sie das Schlüsselwort $ this in PHP verwenden?
- 15. Wann würden Sie keine stark typisierte ASP.NET MVC-Ansicht verwenden?
- 16. Warum würden Sie Path.Direction.CW und CCW in Android verwenden?
- 17. Was ist eine ABSTRACT CLASS und INTERFACE und wann würden Sie sie in PHP verwenden?
- 18. Was sind Ausdrucksbäume, wie verwenden Sie sie und warum würden Sie sie verwenden?
- 19. Python, warum würden Sie [:] über =
- 20. Warum würden Sie einen Contexpr auf einem Konstruktor verwenden?
- 21. Warum und wann angular.copy verwenden? (Deep Copy)
- 22. RxAndroid: Wann BindActivity verwenden und warum?
- 23. Wann verwenden Sie Tabellencluster?
- 24. Wo würden Sie C# Runtime Compilation verwenden?
- 25. wann und warum mehrere NSManagedObjectContext verwenden?
- 26. Wann und warum performSelector verwenden - iOS
- 27. Wenn Sie Webanwendungen entwickeln, wann würden Sie eine Graphdatenbank im Vergleich zu einer Dokumentendatenbank verwenden?
- 28. Warum würden Sie einen unveränderlichen Wert in einem Wörterbuch verwenden?
- 29. Gründe, warum Sie keinen Fremdschlüssel verwenden würden? [php + MySQL]
- 30. Wann node.js verwenden und wann Ajax verwenden?
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 –