1

XML ファイルを DataTable に読み込もうとしていますが、スキーマを一致させて適切に変換するのに苦労しています。XML は次のようになります...

<?xml version="1.0" encoding="utf-8"?>
<School>
  <Teacher>
    <Name>Teacher1</Name>
    <Student>
      <Student-Name>Student1</Student-Name>
      <Gender>M</Gender>
      <Address>Address1</Address>
    </Student>
    <Student>
      <Student-Name>Student2</Student-Name>
      <Gender>F</Gender>
      <Address>Address2</Address>
    </Student>
  </Teacher>
  <Teacher>
    <Name>Teacher2</Name>
    <Student>
      <Student-Name>Student3</Student-Name>
      <Gender>F</Gender>
      <Address>Address3</Address>
    </Student>
  </Teacher>
</School>

テーブルが次のようになるように、それを DataTable に追加する必要があります

氏名 学生名 性別 住所
-------------------------------------------- --------
先生 1 生徒 1 M
アドレス 1 先生 1 生徒 2 F アドレス
2 先生 2 生徒 3 F アドレス 3

DataTable.ReadXML() --> この XML ファイルを読み込めません。エラーは、DataTable がスキーマ推論をサポートしていないことを示しています
DataSet.ReadXML() --> はスキーマを取得せず、これを 2 つのテーブルに分割します。最初は教師テーブル、2 番目は学生テーブルです。スキーマを推測するように設定されています。

もう 1 つの問題は、いくつかの種類の XML ファイルでこれを行っていることです。これらはすべて、学生内に異なる数のノードがネストされているため、ノードの数に関係なく XML を読み取れるように、これを汎用にする必要があります。

これを読み取るために XmlReader を設定する必要があるのか​​、それとも DataSet.ReadXML()/DataTable.ReadXML() に使用する必要がある設定があるのか​​ 疑問に思っています。ありがとうございました。

4

2 に答える 2

0

Xsd.exe (Visual Studio のツール) に精通している場合は、XML データからクラスを生成できます。これにより、XML から生成されたクラスにデータを直接一括でロードできます。

于 2013-07-01T17:31:04.767 に答える