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