0

次のような単純なxmlがあります。

    <?xml version="1.0" encoding="UTF-8"?>
    <xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:mdmi="http://schema.omg.org/spec/MDMI/1.0">
      <xmi:Documentation 
xmi:exporter="Firestar MDMI Tool" xmi:exporterVersion="1.0">
      </xmi:Documentation>
    </xmi:XMI>

xsd を作成しました:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://schema.omg.org/spec/XMI/2.1">
    <xs:element name="XMI">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Documentation">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute type="xs:string" name="exporter"/>
                                <xs:attribute type="xs:string" name="xmi:exporterVersion"/>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute type="xs:float" name="version"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

次に生成されたJavaクラスはJAXBを使用しました。アンマーシャルを使用します。

ほとんどすべてexporterVersion問題ありませんが、フィールドが xml から取得されません。

名前空間へのインポートを使用してみました。attributeFormDefault="qualified"ただし、アトリビュート エクスポータをプルアップしないように設定しても何も起こりません

4

2 に答える 2

0

スキーマの変更 (xmi:名前の一部としてプレフィックスに注意してください)

 <xs:attribute type="xs:string" name="xmi:exporterVersion"/>

<xs:attribute type="xs:string" name="exporterVersion"/>
于 2013-04-10T17:06:05.240 に答える
0

xmi:の名前に修飾子を使用しないでくださいexporterVersion。その名前空間は XML ドキュメントで定義されていますが、スキーマでは定義されていません。

さらに重要なことは、私が知る限り、XSD はまったく必要ありません。XMI マッピング仕様のスキーマを直接使用して、そのスキーマに準拠する XML ドキュメントを作成しようとしているようです。その場合、独自のスキーマは必要ありません。

いずれにせよ、XML ドキュメントは独自のスキーマをまったく参照していないため、その XML ドキュメントの処理にはまったく影響を与えません。

于 2013-04-10T17:24:06.453 に答える