我正在使用模式中的XJC生成java模型类,我不希望elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED出现在我的package-info.java中。我尝试了两种不同的XML -
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.google.com/Protocol" elementFormDefault="unqualified"
targetNamespace="http://www.google.com/Protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="User" type="xs:string"/>
<xs:element name="Attr" type="xs:string"/>
<xs:element ref="A1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="A1">
<xs:complexType>
<xs:sequence>
<xs:element name="Attr" type="xs:string"/>
<xs:element minOccurs="0" maxOccurs="1" name="Attr2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Root">
<xs:complexType>
<xs:choice>
<xs:element ref="A" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
以上Xml生成package-info,如下所示 -
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.google.com/Protocol")
package com.google;
另一方面,在Xml -
之下<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.google.com/Protocol" elementFormDefault="unqualified"
targetNamespace="http://www.google.com/Protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="User" type="xs:string"/>
<xs:element ref="A1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="A1">
<xs:complexType>
<xs:sequence>
<xs:element name="Attr" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Root">
<xs:complexType>
<xs:choice>
<xs:element ref="A" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
在package-info.java下面生成
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.google.com/Protocol", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.google;
我不希望elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED出现在我的java文件中。目前,我必须在生成模型后手动将其编辑为elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED。
有人可以帮忙解释为什么在第二个xml中忽略了elementFormDefault =“unqualified”。
答案 0 :(得分:0)
这里没有什么是错的(如果你已经意识到这一点,道歉)。
JAXB提供商只是猜测你对这个软件包做了什么,但这不会影响任何生成的类,只会影响你可能添加到该软件包的新类。
所有生成的类都会很好地编组,本地元素不会像你一样用 elementFormDefault = unqualified 来编写NS,因为它们是用一个生成的完整的JAXB注释。
也许你已经知道了,而且我没有回答你的问题,但是我想象你认为这是一个你需要处理的错误,只是指出它不会是你自上而下,只使用生成的类。
但是为了得到真正的答案,为什么这里存在差异,您可能不得不深入了解实施细节和JAXB提供者文档以便更好地理解。我也没有看到标准的绑定自定义here,因此也可能是提供者特定的。