3

我在命令行中使用 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"。这可能是问题的原因吗?

有任何想法吗?

4

1 回答 1

3

命名空间限定和 XML 模式

elementFormDefault="qualified"与此 XML Schema 对应的所有元素都将被命名空间限定时。当elementFormDefault="unqualified"只有全局(顶级)元素将被命名空间限定时。

命名空间资格和 JAXB

JAXB 允许使用@XmlSchema. 由于您有多个模式和未公开数量的生成包,因此很有可能""为命名空间生成的 XJC 覆盖默认限定以匹配模式规则。

于 2013-10-29T21:19:03.197 回答