1

私は以下のTimePeriodTypeを持っています

<xs:simpleType name="UnitOfTimePeriodType">
    <xs:restriction base="xs:token">
        <xs:enumeration value="Months"/>
        <xs:enumeration value="Days"/>
        <xs:enumeration value="Years"/>
    </xs:restriction>
</xs:simpleType>
<xs:complexType name="TimePeriodType">
    <xs:sequence>
        <xs:element name="Length" type="digit1-3"/>
    </xs:sequence>
    <xs:attribute name="unitOfLength" type="UnitOfTimePeriodType" use="optional" default="Months"/>
</xs:complexType>

以下に示すように、複数のタイプで使用されます

<xs:complexType name="USAddressType">
    <xs:complexContent>
        <xs:extension base="AddressType">
            <xs:sequence>                   
                <xs:element name="LengthAtAddress" type="TimePeriodType" minOccurs="0"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

<xs:complexType name="CanadaAddressType">
    <xs:complexContent>
        <xs:extension base="AddressType">
            <xs:sequence>
                <xs:element name="LengthAtAddress" type="TimePeriodType" minOccurs="0"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

したがって、以下のインスタンスxml

<LengthAtAddress unitOfLength="Months">
    <Length>36</Length>
</LengthAtAddress>

次のpojoにマップする必要があります

public abstract class AbstractAddress
{
    protected int lengthAtAddress;
    protected UnitOfLengthType unitOfLengthAtAddress;

    public int getLengthAtAddress()
    {
        return lengthAtAddress;
    }

    public UnitOfLengthType getUnitOfLengthAtAddress()
    {
        return unitOfLengthAtAddress;
    }

    //setters
}

外部マッピングを使用している間は、 xml-registryxml-element-declの組み合わせを使用する必要があると思います。私たちの方法を理解することができません。どんな助けでも大歓迎です。

修理

<xml-element java-attribute="lengthAtAddress" xml-path="LengthAtAddress/Length/text()"/>
    <xml-element java-attribute="unitOfLengthAtAddress" xml-path="LengthAtAddress/@unitOfLength">
    <xml-java-type-adapter value="com.equifax.ic.platform.sts.domain.transformation.response.CommonsEnumAdapter"/>
</xml-element>
4

1 に答える 1

1

MOXyの@XmlPath拡張機能または同等の拡張機能をMOXyの外部マッピングドキュメントで使用できます。

@XmlPath("LengthAtAddress/Length/text()")
public int getLengthAtAddress()
{
    return lengthAtAddress;
}
于 2012-08-16T21:12:48.247 に答える