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. のDataTableのデータ
- 3. Oracle SQL Developerのデータ・スキーマのXMLスキーマ
- 4. 属性を列名と値として使用するReadxml
- 5. OpenDJスキーマの更新とデータの更新
- 6. FlatBuffers KeyValuePairデータ型とスキーマの定義
- 7. xmlスキーマとデータをDataSet(とデータグリッドビュー)にロード
- 8. web2pyのjQuery dataTableのJSONデータ
- 9. DataTableの列のデータ型
- 10. 角度primengのDataTableはデータ
- 11. DataTableの代替データ構造
- 12. DataTableでのデータ操作
- 13. OracleBulkCopyのDataTable列データ型
- 14. jQueryのDataTableには、データ
- 15. DataTableはスキーマの推論をサポートしていません
- 16. Protobufスキーマとデータ型を控除
- 17. 共通データ型のJsonスキーマ
- 18. 1つのDataTableから別のDataTableにデータをコピーする
- 19. DataTableにデータを追加
- 20. AngularjsとのDataTable
- 21. Rails:あるスキーマから別のスキーマへデータを転送する
- 22. データ核JDOスキーマを生成中にCreate index文のスキーマ名
- 23. JSONスキーマからJSONデータへ
- 24. ajaxを使用してdataTableにデータを入力すると、データはページング時にDataTableにバインドされません
- 25. SQLDeveloper 3.0.04を使用したデータとスキーマのインポートとエクスポート
- 26. DataTableのjsonデータを変換する
- 27. DataTableの更新されたデータ
- 28. datatable ajax配列のデータ値を送信
- 29. GraphQLスキーマとリレーショナルDBスキーマの互換性
- 30. PostgreSQLスキーマからのデータ型のエクスポート
DaraTable /データセットは、独自のスキーマではなく、あなたが一緒に持って来るものを理解しています。スキーマなしで試してみてください。 –
DataSetはスキーマなしでデータを読み取ることができるようです。しかし、私はdatatableとしようとしたときに私は次のエラーが発生しました。 DatatableはXMLからのスキーマの推論をサポートしていません。 –
"DataSetはデータを読み取ることができます" - 問題は解決しましたか? –