长话短说:在映射XML时,是否更好地拥有复杂类型,因此有多个顶级类或只是匿名类型,从而内部类的层次结构?
长篇故事:我很幸运能够以我喜欢的方式拥有架构。我尝试了使用eclipse和XJC的两种方法,并发现从具有复杂类型的模式生成的类导致在解组时出现莫名其妙的ClassCastException(我想我做错了但是缺乏JAXB的经验我还不能指责它)。匿名类型/内部类方法工作正常,但考虑到关注和重用的分离,似乎“臭”。
奖金问题:没有经验的JAXB / XSD用户经常出现WRT复杂类型映射,这可能会导致解组时出现ClassCastException吗?
谢谢。
答案 0 :(得分:1)
我建议人们尽可能设计自己的对象模型,然后添加JAXB注释以将其映射到XML。 JAXB从XML模式生成对象模型的能力是一种便利机制。
如果您希望使用类生成,则两种模式样式都是可能且有效的。
WRT ClassCastException,它们通常会输出实际和预期的类。要调试此问题,我需要查看与错误相关的属性上的注释,以及实际的unmarshalled类型的类型是否在ObjectFactory上有@XmlRootElement或@XmlElementDecl。
您的XML也可能对您的架构无效。尝试在unmarshalled上设置Schema实例以启用验证。