Frage

Was sind Sie mit XML in Java für die Bindung? JAXB, Castor und XMLBeans sind nur einige der verfügbaren Optionen. Die Vergleiche, die ich gesehen habe, sind alle drei oder vier Jahre alt. Ich bin offen für andere Vorschläge. Rangierung / unmarshalling Leistung und Benutzerfreundlichkeit ist von besonderem Interesse.

Zur Verdeutlichung:. Ich möchte sehen, nicht nur, was Sie Rahmen verwenden, aber Ihre Argumentation für einen über die anderen mit

War es hilfreich?

Lösung

JiBX . Früher verwendete ich Castor XML , aber JiBX erwies sich als deutlich besser, vor allem in Bezug auf die Leistung sein (ein gerade Hafen von einigem Anwendungscode von Castor XML JiBX machte es 9x schneller). Ich fand auch das Mapping-Format für JiBX seiner eleganten als Castors.

JiBX erreicht seine Leistung durch die Verwendung nach der Kompilierung Bytecode Manipulation anstatt die Reflexion Ansatz von Castor angenommen. Dies hat den Vorteil, dass es weniger Anforderungen an die Art und Weise platziert, dass Sie Ihre abgebildet Klassen schreiben. Es besteht keine Notwendigkeit für Getter, Setter und kein argument Konstrukteure nur die Werkzeuge zu erfüllen. Die meiste Zeit können Sie die Klasse schreiben, ohne Mapping-Probleme unter Berücksichtigung und wo es sich dann ohne Änderungen.

Andere Tipps

Wenn Sie eine fundierte Entscheidung treffen wollen, müssen klar sein, warum Sie zwischen XML und Java-Objekte zu übersetzen. Der Grund dafür ist, dass die verschiedenen Technologien in diesem Raum versuchen, verschiedene Probleme zu lösen. Die verschiedenen Werkzeuge in zwei Kategorien unterteilt:

  1. XML-Datenbindung - bezieht sich auf das Verfahren in einem XML-Dokument als ein Objekt in dem Computerspeicher die Informationen repräsentieren. Typischerweise bedeutet dies eine XSD definiert und eine Java-Quellcode Äquivalent zu erzeugen. Interop zwischen verschiedenen Sprachen ist höchste Priorität (daher die Verwendung von XSD) -. Meisten in der Regel für die Implementierung von SOAP-basierten Web-Service
  2. XML-Serialisierung - bezieht sich auf das Schreiben in einen Stream in Speicherobjekten eine grafische Darstellung der aus, so dass es irgendwo oder irgendwann sonst wiederhergestellt werden kann. Sie schreiben die Java-Klassen von Hand; Die XML-Darstellung ist von untergeordneter Bedeutung. Auch für die Leistung der Bedarf ist oft größer und die Notwendigkeit für das Zusammenspiel mit anderen Sprachen wie .net ist oft niedriger.

Für die XML-Serialisierung ist Xstream schwer zu schlagen. JAXB ist der Standard für XML-Bindung.

In jedem Fall, wenn Sie J2EE verwenden Sie müssen sorgfältig auf Klassen von JPA seit Klasse Proxies und Persistenz spezifischen Sammlungstypen abgerufen zahlen Bindung / Serialisierung Tools verwirren.

Wenn Sie eine XSD für die XML, und Sie brauchen sich nicht um die Daten zu einem bestehenden Satz von Klassen zu binden, dann habe ich wirklich wie XMLBeans . Im Grunde funktioniert es wie folgt aus:

  • Compile XSD
  • Verwenden Sie erzeugten Java-Klassen lesen / Dokumente Schreiben in diesem Schema
  • konform

Die Bindung eines XML-Dokuments an die generierten Klassen ist so einfach wie:

EmployeesDocument empDoc = EmployeesDocument.Factory.parse(xmlFile); 

Wir verwenden xstream . Rangierverteiler / unmarshalling ist trivial. Sehen Sie die Tutorial für Beispiele.

JiBX ist das, was hier verwendet wird. Es ist sehr schnell, aber die Bindungen können ein wenig schwierig sein. Allerdings ist es besonders hilfreich, wenn Sie XML-Schemata haben Ihre Domain-Objekte zu beschreiben, wie es wirklich gut zu XSD-Karten (es gibt sogar ein Beta-Tool XSD2Jibx die XSDs nehmen und Stub-Domain-Klassen und Zuordnungen erstellen, die Sie dann nehmen und Koax zu passen Sie Ihre bestehende Domain-Modell).

Es manipuliert Bytecode, so muss es nach der ersten Erstellung der Java Class-Dateien ausgeführt werden. Sie können das Maven Plugin für sie verwenden, oder es nur direkt verwenden (die Eclipse-Plugin scheint nicht für mich zu arbeiten).

Ich habe jaxb verwendet Erfolg mit unterschiedlichen. Zu der Zeit (ein paar Jahre zurück) die gesamte Dokumentation war glanzlos und die grundlegende Verwendung Dokumentation (auch wenn Implementierungen zum Download) wurde schwer zu finden oder variiert.

Der Parser, die die Java-Klassen geschrieben mit wenig Diskrepanz gegenüber dem ursprünglichen XSD war recht gut (obwohl ich denke, dass es Probleme hatte abstrakte XML-Elemente unterstützt).

Ich habe es nicht verwendet, da, aber ich habe ein bevorstehendes Projekt, die eine solche benötigt nur einen Rahmen, und ich werde daran interessiert zu wissen, wie jede andere Messe mit der oben.

Ich habe castor vor 7 Jahren - es ziemlich gut funktioniert. gebrauchter DTDs. Nicht viele Möglichkeiten zu dieser Zeit.

In aktuellen Projekten habe ich verwendet
1) JAXB - Standards, Referenzimplementierung zur Verfügung, Kommandozeile und Ant-Tools zur Verfügung. neueste Version - 2.1.8 benötigt Java 5+
. 2) XStream - für Soap unmarshalling - benötigt Java 5+. Ist das nicht so schnell und standardkonform als JAXB neueste.

BR,
~ A

XMLBeans ist eine gute Wahl, besonders wenn Sie 'gebrochen' haben XSD / WSDL-Dateien.

Don erwähnt

  

EmployeesDocument empDoc = EmployeesDocument.Factory.parse (xmlFile);

.. aber es kann auch einen Knoten nehmen, oder eine Datei oder gerade über jede Quelle.

Keine Kämpfe mit Namespaces, Fahren auf das Objekt, das Sie entordnen mögen, und Factory.parse es.

wünschte, ich hätte es vor 2 Wochen gefunden.

Wir Castor verwenden. Es entspricht unseren Bedürfnissen ziemlich gut.

Ich habe mich gefragt, genau die gleiche Frage, und schließlich fand ich diese Performance-Tests gemacht von IBM. http://www.ibm.com/developerworks/library/x-databdopt2/ . JiBX ist meine Wahl, die ich denke, hehe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top