【问题标题】:should complex types or anonymous types be used in jaxb/xsd mapping应该在 jaxb/xsd 映射中使用复杂类型还是匿名类型
【发布时间】:2010-12-16 07:51:08
【问题描述】:

长话短说:在映射 XML 时,是具有复杂类型并因此具有多个顶级类还是仅具有匿名类型从而具有内部类的层次结构更好?

长话短说:我很幸运能够以我喜欢的方式拥有架构。我用 eclipse 和 XJC 尝试了这两种方法,发现从具有复杂类型的模式生成的类在解组时会导致莫名其妙的 ClassCastException(我想我做错了,但缺乏 JAXB 经验,我还不能指望它)。匿名类型/内部类方法工作正常,但考虑到关注点分离和重用,看起来“很臭”。

额外问题:没有经验的 JAXB/XSD 用户是否经常犯一个明显的错误 WRT 复杂类型映射,这可能会在解组时导致 ClassCastException?

谢谢。

【问题讨论】:

    标签: xml xsd jaxb


    【解决方案1】:

    我建议人们尽可能设计自己的对象模型,然后添加 JAXB 注释以将其映射到 XML。 JAXB 从 XML 模式生成对象模型的能力是一种便利机制。

    如果您希望使用类生成,两种模式的样式都是可行且有效的。

    WRT ClassCastException,它们通常输出实际和预期的类。要调试此问题,我需要查看与错误相关的属性上的注释,以及实际未编组类型的类型是否在 ObjectFactory 上具有 @XmlRootElement 或 @XmlElementDecl。

    您的 XML 也可能对您的架构无效。尝试在 unmarshalled 上设置 Schema 实例以启用验证。

    【讨论】:

    • 谢谢,内容丰富且详细。 XSD 和 XML 啤酒都有效。我很快就会更详细地研究 ClassCastException 问题。我只在测试用例中体验过,不幸的是没有提供额外的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多