Я уже несколько дней обдумывал это и пробовал разные подходы, и я искал SO (см. Какова наилучшая практика преобразования XML в объект Java? ) итакже Google для использования JAXB поверх XSLT, но не может найти подходящий ответ.В течение многих лет я использовал Castor, JIBX и XSLT для различных проектов, поэтому я немного знаю о связывании XML.
Моя проблема в том, что у меня очень плоская структура XML, и я хочу ее разобратьJava-классы и сохраните их непосредственно в реляционной базе данных (должен быть Oracle).Небольшой пример ...
<Output>
<Channel>
<channelId>1</channelId>
<genreId>1</genreId>
</Channel>
<Channel>
<channelId>2</channelId>
<genreId>2</genreId>
</Channel>
<Genre>
<genreId>1</genreId>
<name>Movies</name>
</Genre>
<Genre>
<genreId>2</genreId>
<name>Sport</name>
</Genre>
<ChannelName>
<channelId>1</channelId>
<name>The Movie Channel</name>
</ChannelName>
<ChannelName>
<channelId>2</channelId>
<name>The Sport Channel</name>
</ChannelName>
</Output>
То, что я действительно хочу для приведенного выше XML, - это просто два простых аннотированных класса в отношении OneToOne, которые я могу сохранить с помощью JPA.В основном я хочу, чтобы классы отражали таблицы базы данных следующим образом:
class Channel {
Long id;
String name;
Genre genre;
}
class Genre {
Long id;
String name;
}
XML будет только когда-нибудь разобран, и я действительно ищу простейшее решение этой проблемы, которое, как я понимаю, может быть субъективным вопросом.
Я фанат XSLT, поэтому действительно спрашиваю, если это хороший дизайн - использовать XSLT, чтобы сгибать исходный XML в лучшую структуру, чтобы более точно соответствовать коду, а затем просто использовать несколько очень простых аннотаций JAXB для привязки к моемуклассы.Или я должен выбрать «преобразование» с использованием JAXB, которое, я думаю, будет включать в себя более актуальный Java-код, например XMLAdapter
s и другие аннотации.В принципе, в чем выгода, или что еще дает мне JAXB по сравнению с XSLT?