公式アカウントからの投稿が始まります

現在、C#(VS2005)とXMLを勉強しています。

以下のXML
(EMP:社員 EMP_CODE:社員コード、所属コード、社員コード)から、
<ROOT>
<EMP>
<EMP_CODE>A0325991</EMP_CODE>
<EMP_KBN>92</EMP_KBN>
<FROM_DATE>2004-11-22</FROM_DATE>
<TO_DATE>2007-3-30</TO_DATE>
</EMP>
<EMP>
<EMP_CODE>00491501</EMP_CODE>
<EMP_KBN>11</EMP_KBN>
<FROM_DATE>1998-04-08</FROM_DATE>
<TO_DATE></TO_DATE>
</EMP>
</ROOT>
EMP:社員
EMP_CODE:社員番号
EMP_KBN:雇用形態
FROM_DATE:雇用/契約開始日
TO_DATE:退職/契約解除日

C#側で定義済みのDataSet(カラムまで定義)に格納したいのですが、
XMLの項目数よりDataSet側の項目数が多いため個別にXMLから読込む
方法についてお教え願いますでしょうか。
宜しくお願い致します。

A 回答 (1件)

その型指定済みのDataSetの列名(Columns[n].ColumnName)とXMLのノード名は同じなのでしょうか?



新規に追加すのであれば ...

DataSet dsXML = new DataSet();
dsXml.ReadXml("Sample.XML");
DataTable tbl = dsXml.Tables[0];
// 型指定済みDataSetの型名を DSEMPと仮定
EMPDS ds = new EMPDS();
// 読み込んだXMLの行数分ループ
foreach( DataRow row2 in tbl.Rows )
{
  DataRow row = ds.Tables[0].NewRow();
  // dsXMLのテーブルの列数分のループしてデータの流し込み
  foreach( DataColumn cl in Tbl.Columns )
  {
    // 空フィールドは代入しない
    if ( !row2[ cl.ColumnName ].Equals("") )
    {
      row[ cl.ColumnName ] = row2[ cl.ColumnName ];
    }
  }
  ds.Tables[0].Rows.add( row );
}

といった具合でしょう ...
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!