2つの文字列があります。 1つの文字列はXMLデータを持ち、もう1つの文字列は対応するXMLスキーマを持っています。私はDataTableでデータを読み込もうとしています。それは不可能であるように見えます。私はデータセットを使いたくない。 XMLデータとスキーマをメモリストリームに結合して読み込む方法はありますか?DataTableのReadXMLデータとスキーマ
3
A
答えて
4
DataTableのメソッドを使用してxmlをDataTableに直接ロードする方法も、任意のスキーマから直接DataTableを作成する方法もありません。このような操作は、DataSetを使用して行う必要があります。そうしないと、非常に複雑な回避策を実行することになります。
以前にシリアル化されたXMLからデータセットを再作成できるxmlシリアル化を使用して適用できるいくつかの手法があります。これは任意のスキーマの使用を考慮していません。
XMLを(XDocument、XmlDocument、またはXmlTextReader経由で)読み込み、その場でDataTableを作成するコードを書くこともできますが、書くのは簡単ではなく、かなり時間がかかります。それはまた、ホイールの再発明のようなものです。
Xmlに任意の数のテーブルを含めることができるため、基本的に、DataSetはその階層内のXMLを処理するメソッドを持つ唯一のクラスです。 XMLについてほとんど想定することができない場合の最も広範なケースを処理するには、そのレベルで実装する必要があります。
xmlをXDocumentにロードし、Validate拡張メソッドを使用して検証し、Linq to Xmlを使用して検証することが適切かどうかを検討することもできます。
3
私はXMLデータとスキーマをメモリに結合して ストリームと読み込む方法はありますか?
方法
static DataTable ParseXML(string xmlString)
{
DataSet ds = new DataSet();
byte[] xmlBytes = Encoding.UTF8.GetBytes(xmlString);
Stream memory = new MemoryStream(xmlBytes);
ds.ReadXml(memory);
return ds.Tables[0];
}
例:
string xml = new XElement("inventory",
new XElement("item",
new XElement("name", "rock"),
new XElement("price", "5000")),
new XElement("item",
new XElement("name", "new car"),
new XElement("price", "1"))).ToString();
DataTable dt = ParseXML(xml);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
Console.Write(row[col.ColumnName] + " | ");
Console.WriteLine();
}
関連する問題
- 1. DataTableを含むクラスのXMLスキーマ
- 2. Oracle SQL Developerのデータ・スキーマのXMLスキーマ
- 3. DataTableの列のデータ型
- 4. web2pyのjQuery dataTableのJSONデータ
- 5. xmlスキーマとデータをDataSet(とデータグリッドビュー)にロード
- 6. DataTableの代替データ構造
- 7. OracleBulkCopyのDataTable列データ型
- 8. 1つのDataTableから別のDataTableにデータをコピーする
- 9. 属性を列名と値として使用するReadxml
- 10. Rails:あるスキーマから別のスキーマへデータを転送する
- 11. SQLDeveloper 3.0.04を使用したデータとスキーマのインポートとエクスポート
- 12. DataGridViewとDataTable
- 13. DataTableとViewstate
- 14. C#DataTableとPK
- 15. スキーマとデータの両方のスクリプトを生成
- 16. JSONスキーマでのJSONデータ検証
- 17. Google Visualization DatatableからHighchartsデータ形式へ
- 18. Primefaces DataTable waitTimeデータをロードする
- 19. MaxDBのデータとスキーマをSQL Server 2005/8にエクスポート
- 20. JAXBのアンマーシャラーとスキーマ
- 21. XmlとXmlのスキーマ
- 22. .Net DataViewとDataTableバインディング
- 23. 春データxml構成スキーマ検証エラー
- 24. VS2010データ - >スキーマ比較重複ファイル
- 25. DataTableとcの配列パフォーマンス
- 26. DataTableとGridViewの改行
- 27. MVVMグリッドビューとdatatable WPFのバインド
- 28. DataTableとの内部結合
- 29. VB.NETとLINQ - グループのDataTable
- 30. DataTableと同等のPHP
DaraTable /データセットは、独自のスキーマではなく、あなたが一緒に持って来るものを理解しています。スキーマなしで試してみてください。 –
DataSetはスキーマなしでデータを読み取ることができるようです。しかし、私はdatatableとしようとしたときに私は次のエラーが発生しました。 DatatableはXMLからのスキーマの推論をサポートしていません。 –
"DataSetはデータを読み取ることができます" - 問題は解決しましたか? –