私は私に次のことを与え、残り/ XMLサービスを持っている...XSDとプレーンテキスト
<verse-unit unit-id="38009001">
<marker class="begin-verse" mid="v38009001"/>
<begin-chapter num="9"/><heading>Judgment on Israel's Enemies</heading>
<begin-block-indent/>
<begin-paragraph class="line-group"/>
<begin-line/><verse-num begin-chapter="9">1</verse-num>The burden of the word of the <span class="divine-name">Lord</span> is against the land of Hadrach<end-line class="br"/>
<begin-line class="indent"/>and Damascus is its resting place.<end-line class="br"/>
<begin-line/>For the <span class="divine-name">Lord</span> has an eye on mankind<end-line class="br"/>
<begin-line class="indent"/>and on all the tribes of Israel,<footnote id="f1">
A slight emendation yields <i>
For to the <span class="divine-name">Lord</span> belongs the capital of Syria and all the tribes of Israel
</i>
</footnote><end-line class="br"/>
</verse-unit>
私はこれからスキーマを生成するためのVisual Studioを使用している私ができるクラスを生成するためにXsd.exeではを使用しましたこの混乱をデシリアライズしてプログラム可能なものにする。
私はすべての作業を完了しており、完全に(ほぼ)デシリアライズされています。
問題は、子ノード全体にランダムなテキストが混在することです。生成されたverse-unitオブジェクトは、オブジェクトのリスト(begin-line、begin-block-indentなど)、およびxml全体の文字列のビットを表す別の文字列オブジェクトのリストを提供します。ここで
は私のスキーマは、私は必要なもの
<xs:element maxOccurs="unbounded" name="verse-unit">
<xs:complexType mixed="true">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="marker">
<xs:complexType>
<xs:attribute name="class" type="xs:string" use="required" />
<xs:attribute name="mid" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="begin-chapter">
<xs:complexType>
<xs:attribute name="num" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="heading">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0">
<xs:element name="span">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="class" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="begin-block-indent" />
<xs:element name="begin-paragraph">
<xs:complexType>
<xs:attribute name="class" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="begin-line">
<xs:complexType>
<xs:attribute name="class" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="verse-num">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="begin-chapter" type="xs:unsignedByte" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="end-line">
<xs:complexType>
<xs:attribute name="class" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<xs:element name="end-paragraph" />
<xs:element name="end-block-indent" />
<xs:element name="end-chapter" />
</xs:choice>
</xs:sequence>
<xs:attribute name="unit-id" type="xs:unsignedInt" use="required" />
</xs:complexType>
</xs:element>
ですTHIS IS。オブジェクトによって表されるxmlノードに囲まれていないランダムなテキストが必要です。すべてが入っている順序を知っています。
私はこれが複雑なので分かります。
<field name="test_field_0">
Some text I'm sure you don't want.
<subfield>Some text.</subfield>
More text you don't want.
</field>
私は、テキストオブジェクト、またはサブフィールドオブジェクトのいずれかを持つことができるアイテムでフィールドオブジェクトを生成するXSDを必要としています。私は、ランダムなテキストが子ノード内のどこにある必要があります。
残念ながら、このXMLは私が扱う必要があります。 デシリアライズする前に、マジックをXMLに置き換えて正規表現文字列を実行することについてどう思いますか?私はすべての自己閉鎖 タグを開始タグに変え、すべての タグをタグに変えることを考えていました。どう思いますか? –
あなたのサンプルのXMLの大きさに応じて、しばらく時間がかかることがあります。 – Spence