JAXB:当有多个XSD时,如何知道要解组的Java类?

时间:2011-07-17 01:36:22

标签: java jaxb

我有几个XSD文件,我使用XJC处理它们来生成Java类。

我想读取一个任意XML文件,并根据XML文件的内容将其转换为生成的Java类之一。

是否可以在不检查XML本身内容的情况下执行此操作,并让JAXB框架完成所有工作?

例如,假设我有以下XSD文件:

dog.xsd cat.xsd

我使用XJC编译它们以生成Dog.java和Cat.java。

我现在阅读了一些任意的XML,并创建了Dog或Cat的实例,具体取决于它匹配的模式。

感谢。

2 个答案:

答案 0 :(得分:4)

XJC根据模式中的类型生成类,而不是模式本身。它将生成的类放入基于目标名称空间的包中。如果将多个模式加载到JAXBContext中,它将自动解组为正确的类型。这几乎是JAXB的重点。如果您的两个模式在同一名称空间中具有相同名称的类型,则XJC将失败。

答案 1 :(得分:0)

一个可能有用的简单解决方案是尝试解组其中一个,如果它正常,那么它是正确的,如果你得到一个例外它应该使用的第二个。