2015-01-01 2 views
19

Ich beginne ein neues Projekt, wo ich Drittanbieter-XSD habe. Meine Java-Anwendung muss XML-Nachrichten generieren, die dieser XSD entsprechen, und eingehende XML-Nachrichten lesen, die dieser XSD entsprechen. In der Vergangenheit habe ich hierfür Apache XMLBeans verwendet (http://xmlbeans.apache.org/). Es sieht so aus, als ob XMLBeans zurückgezogen wurde. Was ist ein guter Ersatz für XMLBeans jetzt, dass es zurückgezogen wurde? Ich habe XStream für andere Projekte verwendet, aber ich kann mich nicht erinnern, dass XStream Java-Klassen aus einem XSD generieren kann, daher denke ich, dass es keine gute Wahl für XMLBeans für diesen Anwendungsfall ist. Ich habe Hunderte von Typen in der XSD definiert und würde es wirklich vorziehen, nicht die Hunderte von Java-Klassen erstellen zu müssen, um sie in Java von Hand darzustellen.Was sollte anstelle von XMLBeans jetzt verwendet werden, nachdem es zurückgezogen wurde?

Mit anderen Worten, mit dem hier angegebenen XStream-Beispiel: http://x-stream.github.io/tutorial.html, ich habe einen Personentyp (und 99 andere) in der XSD definiert. Mit XMLBeans kann ich die Java-Klassen generieren, um diese Objekte darzustellen, aber mit XStream müsste ich die Java-Klassen (z. B. Person) manuell oder mit einem anderen Werkzeug erstellen. Welches Werkzeug sollte ich in diesem Fall verwenden?

Jede Hilfe würde sehr geschätzt werden.

Danke, John

+1

Wenn Sie mit 'axis2', sollten Sie die Optionen, die sie vorschlagen, in' ADB' zur Kasse, 'JiBX' und' XMLBeans' (jetzt im Ruhestand) [ hier] (https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html#choosingclient). – mystarrocks

+0

Verwenden Sie xsd, um die Klassen zu generieren – MihaiC

+0

Sorry, aber Anforderungen für Bibliothek Empfehlungen sind explizit off-topic. Ich schlage vor, dass Sie Google für "xsd java generieren" ... oder versuchen Sie die "Software-Empfehlungen" Website; siehe unten. –

Antwort

8

Haben Sie sich JAXB? Ich habe mit beiden nichts getan, aber googeln nach "Alternative zu XMLBeans" bringt viele Hinweise auf dieses Paket. Hier ist ein Artikel, der sie vergleicht ...

http://blog.bdoughan.com/2012/01/how-does-jaxb-compare-to-xmlbeans.html

+0

Es sieht so aus (bis jetzt) ​​JAXB wird genau das liefern, was wir brauchen. Ich konnte Java-Klassen aus dem xsd generieren (573 Java-Klassen wurden generiert). Es ist ein "Eigenschaftswert bereits definiert" -Fehler aufgetreten, der beim Generieren der XMLBeans-Klassen nicht aufgetreten ist. Ich konnte dieses Problem vorerst umgehen (ich vermute, dass ich eine Jaxb-Bindungsdatei für den permanenten Fix schreiben muss). Danke für die Hilfe Steve es wird sehr geschätzt. – John

+1

Die einzige? Problem mit JAXB für mich, ist das "Unmarshaller/Marshaller" Chaos ...: - \ XMLBeans ist sehr einfach und transparent. Außerdem weiß ich nicht, wie man eine "xml-Datenbank" implementiert (xmlbeans erzeugt Methoden, um die XML-Elemente als Liste oder Array zu manipulieren) – marcolopes

+0

Das Problem, auf das wir stießen, war das Problem mit thread safe v. Performance. Das Erstellen des Kontextobjekts ist für sehr große XML-Dateien langsam. Der Marshaller und der Unmarshaller sind NICHT fadensicher. Mehr hier: https://jaxb.java.net/guide/Performance_and_thread_safety.html und hier: http://stackoverflow.com/questions/7400422/jaxb-creating-context-and-marshallers-cost – John

Verwandte Themen