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很有可能会为命名空间生成“”,以覆盖认的限定条件以匹配架构规则.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念