我从命令行使用xjc从XSD生成POJO.这是我运行的命令:
"%java_home%\bin\xjc" -p com.etc.etc.etc.etc ConsolidateDalert.xsd
@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 举报,一经查实,本站将立刻删除。