強く型付けされたリソースにする
ファイルをプロジェクトに追加し、Build Actionに "Content"を付け、 "Do Not Copy"を付けます。次に、[リソース]デザイナタブ([プロパティ]フォルダまたは[プロジェクトプロパティ]ダイアログ)を開き、ファイルをリソースデザイナキャンバスにドラッグします。ファイルがアセンブリに埋め込まれました。これにより、デフォルトのResources
クラスの強く型付けされたプロパティが生成され、その名前は元のファイルと同じ名前になります。
データセットにロードするには、StringReader
を接続します。それはReadXml
の動作を変更して、あなたはほとんど常に最初のスキーマをロードすることに注意してください:XmlReadModeについては
var ds = new DataSet();
using (var rdr = new StringReader(Properties.Resources.myschema))
{
ds.ReadXmlSchema(rdr);
}
ds.ReadXml("mystuff.xml", XmlReadMode.IgnoreSchema);
を使用すると、オプションのカップルを持っています。すでにロードされているものと異なるXMLファイルにインラインで定義されたスキーマがあるかどう彼らはあなたのデータはあなたのスキーマと一致しない場合に何が起こるかを指示し、何をすべきか:
XmlReadMode.ReadSchema
は、任意のインラインスキーマをインポートします既にロードされているスキーマと衝突しない限り長くしてください。名前の衝突がある場合、ReadXml
はスローします。または
XmlReadMode.IgnoreSchema
は、インラインスキーマを無視し、指定したスキーマに強制的にデータを強制しようとします。このモードでは、スキーマと一致しないデータはではなく、がデータセットになります。
XmlReadMode.InferSchema
はインラインスキーマを無視しますが、この場合、スキーマに準拠していないデータはスキーマを拡張させます。たとえば、XMLファイルにスキーマにないテーブルがある場合、そのテーブルはスキーマに追加され、インポートされます。異なるタイプの列間に名前の衝突がある場合、ReadXml
がスローします。あなたが最初ReadXml
を行う場合は、インラインスキーマ、またはInferSchema
モードがあるかどう存在しない場合は
、あなたは常にReadSchema
モードを取得します。それがあなたが望むものであっても、それについて明示するほうが良いです。
ワウ。ころした。とても簡単。ありがとう!! – akevan
readxml()の前にreadschema()を呼び出しても、XmlReadMode.IgnoreSchemaが動作しないようです。これは、上記の自分自身のコードを使用している場合に当てはまります。 XMLファイル内にありスキーマファイルにリストされていない要素は、サイレントにデータセットに追加されます。 – Canacourse