JAXB相对于XSLT有什么好处?

and*_*dyb 3 java xslt jaxb unmarshalling

我一直在讨论这个问题并尝试了几天不同的方法,我已经搜索了SO(请参阅将XML转换为Java对象的最佳做法是什么?)以及谷歌在XSLT上使用JAXB但是不能找到合适的答案.多年来我使用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>
Run Code Online (Sandbox Code Playgroud)

我真正想要的XML是OneToOne关系中的两个简单注释类,我可以使用JPA持久化.基本上我想要反映数据库表的类,如下所示:

class Channel {
    Long id;
    String name;
    Genre genre;        
}

class Genre {
    Long id;
    String name;       
}
Run Code Online (Sandbox Code Playgroud)

XML只会被解组,我真的在寻找这个问题的最简单的解决方案,我认为这可能是一个主观的问题.

我是XSLT的粉丝,所以我真的在问,使用XSLT将原始XML弯曲成更好的结构是否更好地与代码匹配,然后只使用一些非常简单的JAXB注释绑定到我的类.或者我应该选择使用JAXB进行"转换",我认为这将涉及更多实际的Java代码,例如XMLAdapters和更多注释.基本上,有什么好处,或者JAXB通过XSLT给我什么?

duf*_*ymo 15

JAXB是Java对象到XML绑定API.

XSL-T将XML转换为XML.

他们对我来说并不是一回事.最终结果可能是XML,但在每种情况下源都不同.

我认为答案取决于您对每种技术的舒适程度.如果XSL-T和JAXB组合对你来说很自然,那么无论如何都要朝着那个方向前进 - 除非它是一个重复执行的运行时操作.在那种情况下,我会说性能可能是一个问题,取决于转换的复杂性.