几天来,我一直在思考这个问题并尝试了不同的方法,并且搜索了 SO(请参阅将 XML 转换为 Java 对象的最佳实践是什么?)以及 Google 使用 JAXB over 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 和更多注释。基本上,与 XSLT 相比,JAXB 有什么好处,或者还有什么其他好处?