我有我的xml模式定义如下
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://poc/"
elementFormDefault="qualified"
targetNamespace="http://poc/"
attributeFormDefault="unqualified"
xmlns:tns="http://poc/">
<xs:simpleType name="custType">
<xs:restriction base="xs:string">
<xs:enumeration value="Primary"/>
<xs:enumeration value="Coapplicant"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="state" type="xs:string" minOccurs="0"/>
<xs:element name="zip" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="request1">
<xs:complexType>
<xs:sequence>
<xs:element name="fname" type="xs:string" minOccurs="0"/>
<xs:element name="lname" type="xs:string" minOccurs="0"/>
<xs:element maxOccurs="1" name="categoryCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="retiredInd" type="xs:boolean" minOccurs="0"/>
<xs:element name="custType" type="tns:custType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="response1">
<xs:complexType>
<xs:sequence>
<xs:element name="addr" type="tns:addressType" minOccurs="0"/>
<xs:element name="nation" type="xs:token" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我使用maven-jaxb2-plugin根据这个xsd生成Java类。
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.3</version>
<configuration>
<schemaDirectory>${basedir}/cfg</schemaDirectory>
<schemaIncludes>
<include>xsd/*.xsd</include>
</schemaIncludes>
<generateDirectory>${basedir}/src/main/java</generateDirectory>
<strict>false</strict>
<extension>true</extension>
<removeOldOutput>false</removeOldOutput>
<clearOutputDir>false</clearOutputDir>
<forceRegenerate>true</forceRegenerate><plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.4</version>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.4</version>
</plugin>
</plugins>
</configuration>
<executions>
<execution>
<id>tsys-sources</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
生成代码后,我发现所有元素都有@xmlement注释(required=true)。为什么?我有许多minOccurs=“0”元素。为什么元素上总是添加required=true。
绑定中的本地配置问题。xml。在清理了一些无用的配置后,我把它修好了。
我从你的例子中生成源代码,使用你例子中的插件
,我只有@xmlement(required=true)
在
AddressType#address
AddressType#city
领域。
public class AddressType {
@XmlElement(required = true)
protected String address;
@XmlElement(required = true)
protected String city;
protected String state;
protected String zip;
// ...
}
因此,还要将minOcurrs
添加到此字段。
问题内容: 我已经使用JAXB编写了许多类进行序列化,并且我想知道是否存在一种基于注释为每个对象生成XSD文件的方法。有这个工具吗? 喜欢的东西是 真棒 。有什么可以做的吗? 问题答案: 是的,您可以在JAXBContext上使用该方法: 您可以利用实现控制输出的位置:
myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?
我们试图使用gradle、xsd和xjc生成JAXB类,JAXB类应该具有XmlRootElement注释,以便可以将其作为web服务响应公开。我们正在跟踪这个链接http://azagorneanu.blogspot.com/2011/09/configure-maven-to-generate-classes.html,这很有帮助,但我们无法找到一个只有gradle的特定示例。所以我们想出了一
我有两个XSD,其中一个包含另一个,让我们称它们为A和B。 B有很多xs:complexType定义,并且包含在a中,但是a只对其中的一些定义感兴趣。 现在发生的事情是为B中定义的所有类型生成类。我想要实现的是只为A直接引用的类型生成类。 我曾尝试修改XSD A以导入B,而不是包含,但对于maven jaxb插件来说,效果并不理想。 XSD A导入B: 生成源的插件设置: 我知道有一种方法可以从命
与JAXB为给定XSD生成JAXB类类似,Jackson是否提供了从XSD或JSON生成Jackson类的实用程序。 JAXB类geberator已经生成了一组为XSD模式定义的类。例如,对于多态类型,JAXB具有以下注释,以基于XML元素名称来标识名称。 是否可以在杰克逊中创建类似的类。即,基于XML元素名称来标识类型。
如果 XML 是由 JAXB 类(而不是由 XSD)生成的,那么我没有要验证的 XSD。如何验证 XML?JAXB 在开始取消编组之前是否会自动对 XML 进行验证?