2009-04-15 4 views
15

Ich habe in Java ein paar XML-APIs behandelt, aber ich verstehe nicht alle Frameworks, die in Java für den Umgang mit XML zu welchem ​​Zweck verfügbar sind (zB JAXB, JAXP, Xerces, StAX) , Castor usw.). Kann jemand die beliebtesten Java-XML-APIs hervorheben und kurz beschreiben, wofür sie gedacht sind? Ich wäre auch daran interessiert, welche APIs heutzutage verwendet werden und welche als veraltet betrachtet werden.Java XML-APIs

+0

Haben Sie sich Vtd-Xml angesehen? –

+0

Die meisten Ihrer Fragen werden in früheren StackOverflow-Fragen beantwortet: - [Java API for XML] (http://stackoverflow.com/questions/678894/) - [XML-Serialisierung in Java?] (Http://stackoverflow.com/questions/35785/) - [Bester XML-Parser für Java] (http://stackoverflow.com/questions/373833/) - [Einfache Möglichkeit, Xml in Java zu tun] (http: // stackoverflow .com/questions/528664 /) Diese Art der Suche ist momentan einfacher zu machen von Google Eddie

Antwort

16
  • JAXP ist eine „Plug-API“, eine Reihe von Schnittstellen und abstrakte Klassen mit einer „Referenz-Implementierung“ von Sun, aber es nutzt die Fabrik Ansatz, damit Sie eine andere Implementierung auszulagern (zB ein das könnte in bestimmten Arten von Anwendungen schneller sein), ohne dass Sie Ihren Code ändern müssen, nur durch changing a system property. Es umfasst DOM, SAX, StAX und XSLT. Sun hat eine gute comparison page für DOM/SAX/StAX. Ich empfehle die O'Reilly book on Java XML, Sie können es zu einem vernünftigen Preis verwendet finden, aber stellen Sie sicher, dass Sie die neueste (3.) Edition haben.

  • JAXB ist eine Möglichkeit, Java-Klassen mithilfe eines XML-Schemas an XML-Dateien zu binden. (Sie können die Java-Klassen automatisch mithilfe eines Schemas generieren, oder Sie können das Schema mithilfe von Java-Klassen automatisch generieren. Ich habe das vorherige, nicht das letztere verwendet.) Es kann nützlich sein, wenn Ihre XML-Dateien ein bekanntes Schema und Sie haben möchte die Daten in einer XML-Datei so behandeln, als wären es Objekte in einer Java-Klasse. Sie führen nur sehr wenige API-Aufrufe durch, nur ein oder zwei, um die Daten von Java nach XML zu mappen oder die Daten von XML nach Java zu entpacken. Wenn Ihre XML-Dateien mehr Freiform sind und/oder Sie XPATH verwenden möchten, um Dinge zu finden, sollten Sie wahrscheinlich eines der JAXP-APIs verwenden.

  • Castor ist eine Alternative zu JAXB; Ich habe es nicht benutzt, aber es gibt eine comparison page on IBM's website.

  • Xerces ist die Familie der Apache-XML-Pakete. Es enthält einen für Java, von denen die meisten über JAXP als alternative Implementierung für die Referenzimplementierung von Sun verwendet werden können. Es enthält auch Bibliotheken für C++ und Perl.

+7

Die Java XML APIs fassen alles zusammen, was ich an der plumpen Architektur hasse. Ich möchte keine "Pluggable Architecture": Ich möchte einfach eine standardmäßige, schnelle und korrekte Parsing-Bibliothek aus der Box ... Stellen Sie sich vor, String wäre eine "steckbare Architektur"! –

+1

@NeilCoffey Ich denke, die Handhabung von XML ist eine etwas komplexere Aufgabe als der Umgang mit einer geordneten Liste von Zeichen. – vbence

+1

Es ist komplexer ... aber der Zweck einer API besteht darin, eine solche Komplexität dem Anwendungsprogrammierer nicht zugänglich zu machen (oder zumindest nur das notwendige Maß an Komplexität aufzudecken). –