公共 xsd 模式导入到另一个模式未解组

common xsd schema imported into another schema not being unmarshalled

http://blog.bdoughan.com/2011/12/reusing-generated-jaxb-classes.html

我正在尝试从使用 castor 切换到 jaxb。

我正在将 commontypes.xsd 模式导入另一个模式,然后使用 jaxb 生成 java 类 但是当我解组示例 XML 文件时导入的类型除非我在示例 xml.

中显式设置所有名称空间,否则均为 null

这真的很痛苦,因为我希望调用应用程序能够向我发送纯文本 XML 而不是散落着大量名称空间和前缀等的应用程序。

关于如何避免必须这样做的任何建议?

我使用上面的文章和 XJC episode with maven 在 maven 中生成了 .episodes 文件,但它没有帮助,当我解组时我仍然得到空值。

有人能帮忙吗?

谢谢

我成功了!

问题是 xjc 从我的 .xsd 文件生成的 package-info.java 文件将 elementFormDefault 设置为 QUALIFIED

@javax.xml.bind.annotation.XmlSchema(
    namespace = "http://www.example.com/commontypes", 
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package com.example.commontypes;

当我将其更改为不合格并重新编译 java 代码时,unmarshall 然后工作了。

根本原因修复在我的 .xsd 文件中,我在其中设置了 elementFormDefault="unqualified"

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"   
    targetNamespace="http://www.example.com/commontypes"     
    xmlns="http://www.example.com/commontypes"  
    elementFormDefault="unqualified" 
    attributeFormDefault="unqualified">

这导致生成以下包-info.java 文件

@javax.xml.bind.annotation.XmlSchema(
    namespace = "http://www.example.com/commontypes"
)
package com.example.commontypes;

再一次,unmarshall 成功了!

感谢 Blaise 所做的所有工作,是对他的一篇博文的评论让我弄明白了!