現在、XPath表記を使用してXmlDocumentに要素を追加しています。この要素には、要素をファイルの適切な場所に配置するコードを記述しています。 1つの例外を除いて。私は自分のXSDファイルで定義されているシーケンスルールに注意を払う方法を知らない。XSDに準拠するXmlDocumentに新しい要素を追加する
XmlDocumentに要素を追加して、XMLファイルを管理するXSDのシーケンス定義に準拠する方法はありますか?
<rootTag>
<area name="I define an area">
<point x="1" y="1" />
<point x="2" y="2" />
<point x="3" y="3" />
<description>some text here</description>
</area>
</rootTag>
修正するには:私は、ユーザーが上記の子タグの値が入った順番に応じて、取得しかし
<rootTag>
<area name="I define an area">
<description>some text here</description>
<point x="1" y="1" />
<point x="2" y="2" />
<point x="3" y="3" />
</area>
</rootTag>
:
例えば、私のXML文書は次のようになります。上の例では、XSDファイルからDataSet(tempXmlDatasetという名前)を作成します。私は、XmlDocumentの内容をtempXmlDatasetに渡し、物事が適切に並べ替えられます。
しかし、私の問題は、XMLドキュメントの最初の子のオプションによって発生します。このオプションは、「エリア」、「ライン」、または「ポイント」オブジェクトを許可するようにXSDで定義されています。 "area"と "line"はどちらも子として "point"要素を持っています。しかし、子供の「ポイント」は「ポイント」オブジェクトと同じではありません。したがって、すでに理解しているように、tempXmlDataset.ReadXmlSchema(...)はxとyのみを持つ "ポイント"テーブルを作成します。これは、 "area"と "line"の子の定義によるものです。
私のコードがtempXmlDataset.ReadXml(...)を実行するとき、 "point"オブジェクトの属性は "point"オブジェクトを子 "point"と見なして読み込まれません。ここでは「点」オブジェクトの例です:あなたはこのC#]をタグ付けするので
<rootTag>
<point name="I define a point" x="3" y="3" otherAttributes="">
<description>some text here</description>
</point>
</rootTag>
は、あなたのプログラムが実行されるスキーマ文書へのアクセス権を持っていますか?その場合、BCLはスキーマに次に何が来るべきかを尋ねる方法を提供します。 –
私は実行時にスキーマを持っています。 「BCL」は何を表していますか?基本クラスのライブラリ?? –
Yep、System.Xml.Schema。具体的には、[このMSDN記事の](http://msdn.microsoft.com/en-us/library/system.xml.schema.xmlschemainfo.aspx)のサンプルコードを見てください。特に 'XmlSchemaParticle [] particles = validatorの呼び出しに注意してください。GetExpectedParticles(); ' –