2

以下のように定義された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>

この xsd に対して Java クラスを生成するために maven-jaxb2-plugin を使用します。

<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>

コードを生成した後、すべての要素に @XmlElement(required = true) の注釈が付いていることがわかりました。なんで?多くの minOccurs="0" 要素があります。required=true が常に要素に追加される理由。

4

2 に答える 2

2


私はあなたの例からプラグインを使用してあなたの例からソースを生成し@XmlElement(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このフィールドにも追加します。

于 2013-03-07T09:38:19.207 に答える
0

私のbinding.xmlのローカル設定の問題。役に立たない設定の一部をクリアした後、修正しました。

于 2013-03-07T20:36:32.707 に答える