1

次のようなセクションを定義する一般的なスキーマがあります。

<xs:element name="detail">
    <xs:annotation>
        <xs:documentation>
        </xs:documentation>
    </xs:annotation>    

    <xs:complexType>
        <xs:sequence>
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
</xs:element>

私は 1 日中このことについて調べてきましたが、detail 要素の下の実際の xml ドキュメントにあるフィールドにたどり着く方法について、まだ頭を悩ませているようには見えません。

私はそれが次のようになることを知っています:

<detail>
   <drawing>
      <name="test"/>
    </drawing>
</detail>

また

<detail>
   <icon>
      <icon_name="testIcon"/>
      <icon_image="iconImage.jpg"/>
    </icon>
</detail>

xmlbeans には、details 要素がワイルドカードであるため、そこに何が入っているかを知る方法がありません。xmlbeans サイトは、読み取ったドキュメントを変更してワイルドカード要素を 1 レベル上に移動することを示していましたが、それは切り詰められているようには見えません。また、スキーマを変更して、特定のコードに存在する可能性のある要素に対して要素参照を行うこともできます。これについての考えは?

4

1 に答える 1

0

詳細要素には任意の有効な XML を含めることができるため、コンテンツにアクセスするための一般的な方法 (XPath、DOM トラバーサルなど) を使用するか、各子を特定のスキーマに具体的に一致させようとする (できれば一意の名前空間を使用する) ことに制限されます。既知のスキーマに一致する子は、XML からオブジェクトを生成するお気に入りのライブラリにフィードできます。

あなたが言うように、別のオプションは、スキーマで有効な各子タイプを指定することです(オプションで、拡張性のために下部にワイルドカードを使用します)。

于 2012-01-10T17:06:22.803 に答える