2

xml の 2 つの異なる複合型で同じ要素 ID を持っています。Maven Jaxb プラグインを使用して解析しようとすると、以下の例外が発生します。バインディングの助けを借りて要素を使用して名前を変更せずに解析する方法はありますか?スキーマ内で少なくとも 30 回属性 ID を持っています。よろしくお願いします

com.sun.istack.SAXParseException2: プロパティ「Id」は既に定義されています。この競合を解決するには、<jaxb:property> を使用します。

            <xs:element name="aliases" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="alias" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element ref="tran" minOccurs="0"/>
                                    <xs:element name="id">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension base="xs:string">
                                                    <xs:attribute name="old_value" type="xs:string"/>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                                <xs:attribute name="end" type="xs:string"/>
                                <xs:attribute name="start" type="xs:string"/>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>



<xs:element name="tin_affiliation">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="tran" minOccurs="0"/>
            <xs:element name="id">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="old_value" type="xs:string"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="end" type="xs:string"/>
        <xs:attribute name="start" type="xs:string"/>
    </xs:complexType>
</xs:element>
4

3 に答える 3

0

問題なく、XML 要素に同じ名前の XML 属性/要素が複数存在する可能性があります。表示されている例外は、これにより生成されたクラスが同じ名前の 2 つのプロパティを持つ場合です。これは、次の状況で発生する可能性があります。

  1. 複合型には、同じ名前の属性と要素が含まれています。
  2. 複合型には、それが拡張する複合型としての属性/要素と同じ名前の属性/要素が含まれます。
于 2013-08-26T21:22:03.667 に答える
0

プラグイン org.codehaus.mojo: jaxb2-maven-plugin: 2.3 および org.jvnet.jaxb2_commons:jaxb2-basics-annotate:0.6.4 を使用してこれを達成でき、特に以下のバインディング構成で multiple="true

<jxb:bindings node=".//xs:attribute[@name='abc]"
                multiple="true">
                <jxb:property name="abc_attribute" />
            </jxb:bindings>
        </jxb:bindings>
于 2013-09-09T20:21:30.520 に答える