微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-JaxB xjc生成的pojos包含空白名称空间

我从命令行使用xjc从XSD生成POJO.这是我运行的命令:

"%java_home%\bin\xjc" -p com.etc.etc.etc.etc ConsolidateDalert.xsd

对于生成的某些POJO,POJO中的属性如下所示:

@XmlElement(name = "UnparsedTelephone", namespace="")
protected String unparsedTelephone;

据我所知,与没有“名称空间”属性的其他元素相比,我对这些元素的指定没有任何不同.

这是XSD的相关部分:

类型声明:

<xs:complexType name="TelephoneType">
    <xs:choice>
        <xs:element name="UnparsedTelephone" type="xs:string"/>
        <xs:element name="ParsedTelephone" type="ParsedTelephoneType"/>
    </xs:choice>
</xs:complexType>

元素声明:

<xs:element name="Telephone" type="TelephoneType"/>

使用“电话”的地方:

<xs:complexType name="CompanyContactType">
    <xs:sequence>
        <xs:element ref="Telephone"/>
    </xs:sequence>
</xs:complexType>

使用“ CompanyContact”的地方:

<xs:complexType name="AmountType">
        <xs:sequence>
            <xs:element ref="CompanyContact" minOccurs="0" />
            <xs:element name="TriggerAmount" type="xs:string"/>
        </xs:sequence>
</xs:complexType>

我可以简单地从每个POJO中删除namespace =“ =”,但这可能需要一点时间,我想更好地了解它为什么会首先发生.

另外,这大约是8个XSD链接在一起.它们在架构定义中都具有相同的targetNamespace和xmlns,但是其中一些具有elementFormDefault =“ unqualified”,而另一些具有elementFormDefault =“ qualified”.这可能是问题的原因吗?

有任何想法吗?

解决方法:

命名空间资格认证XML模式

当elementFormDefault =“ qualified”时,与该XML Schema对应的所有元素都将是名称空间限定的.当elementFormDefault =“ unqualified”时,仅全局(顶级)元素将被命名空间限定.

命名空间资格认证杰克斯

JAXB允许使用@XmlSchema在包级别设置名称空间资格.由于您有多个架构,并且生成的软件包数量未公开,因此XJC很有可能会为命名空间生成“”,以覆盖认的限定条件以匹配架构规则.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。