2015-01-01 17 views
19

Zaczynam nowy projekt, w którym mam XSD innej firmy. Moja aplikacja Java musi generować komunikaty XML zgodne z tym XSD i odczytywać przychodzące wiadomości XML zgodne z tym XSD. W przeszłości używałam do tego Apache XMLBeans (http://xmlbeans.apache.org/). Wygląda na to, że XMLBeans został wycofany. Co jest dobrym zamiennikiem dla XMLBeans teraz, gdy został wycofany? Użyłem XStream na inne projekty, ale nie pamiętam, że XStream ma możliwość generowania klas Java z XSD, więc myślę, że nie jest dobrym wyborem ponad XMLBeans dla tego przypadku użycia. Mam setki typów zdefiniowanych w XSD i naprawdę wolałbym nie tworzyć setek klas Java, aby reprezentować je w Javie ręcznie.Czego używać zamiast XMLBeans teraz, gdy został wycofany?

Innymi słowy, używając przykładu XStream podanego tutaj: http://x-stream.github.io/tutorial.html, Mam typ Person (i 99 innych) zdefiniowanych w XSD. Korzystając z XMLBeans, mogę generować klasy Java w celu reprezentowania tych obiektów, ale używając XStream, musiałbym utworzyć klasy Java (np. Person) ręcznie lub używając innego narzędzia. Jakiego narzędzia powinienem użyć w tym przypadku?

Każda pomoc zostanie bardzo doceniona.

Dzięki John

+1

Jeśli używasz 'axis2' należy do kasy opcje Sugerują w' ADB', 'JiBX' i' XMLBeans' (obecnie na emeryturze) [ tutaj] (https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html#choosingclient). – mystarrocks

+0

Użyj xsd do wygenerowania klas – MihaiC

+0

Niestety, prośby o rekomendacje bibliotek są jawnie nie na temat. Proponuję, abyś Google "wygenerował xsd java" ... lub wypróbował stronę z "zaleceniami oprogramowania"; patrz poniżej. –

Odpowiedz

8

Pan spojrzał w JAXB? Nic z tych rzeczy nie zrobiłem, ale szukanie "alternatywy dla XMLBeans" wywołuje wiele odniesień do tego pakietu. Oto artykuł, który porównuje je ...

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

+0

Wygląda na to, (jak dotąd) JAXB dostarczy dokładnie tego, czego potrzebujemy. Udało mi się wygenerować klasy Java z klasy xsd (wygenerowano 573 klasy Java). Wystąpił błąd "zdefiniowanej wartości właściwości", który pojawił się, ale nie wystąpił, gdy generowałem klasy XMLBeans. Na razie udało mi się obejść ten problem (zgaduję, że będę musiał napisać plik powiązania jaxb dla stałej poprawki). Dzięki za pomoc Steve to jest bardzo doceniane. – John

+1

Tylko? problem z JAXB dla mnie, to bałagan "unmarshaller/marshaller" ...: - \ XMLBeans jest bardzo prosty i przejrzysty. Ponadto nie wiem, jak zaimplementować "bazę danych xml" (xmlbeans tworzy metody manipulowania zasobami xml jako listą lub tablicą). – marcolopes

+0

Problemem, który napotkaliśmy, był problem z wydajnością v. Tworzenie obiektu kontekstowego jest wolne dla bardzo dużych plików XML. Marshaller i unmarshaller NIE są bezpieczni w wątkach. Więcej tutaj: https://jaxb.java.net/guide/Performance_and_thread_safety.html i tutaj: http://stackoverflow.com/questions/7400422/jaxb-creating-context-and-marshallers-cost – John