公共 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 所做的所有工作,是对他的一篇博文的评论让我弄明白了!
再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 所做的所有工作,是对他的一篇博文的评论让我弄明白了!