2012-01-16 18 views
0

xmlをlistviewで見るよりもデータテーブルにインポートするのに問題があります。xml to datatable

<Players> 
    <Player> 
    <Name>Joe</Name> 
    <Kills>352</Kills> 
    <Death>608</Death> 
    </Player> 
    <Player> 
    <Name>^1dR.eViL</Name> 
    <Kills>8224</Kills> 
    <Death>4592</Death> 
    </Player> 
<Players> 

今すぐテーブルを取得するために、私は次のようでした:

public DataTable getTable() 
{ 
    string file = @"E:\...\Players.xml"; 
    DataSet ds = new DataSet(); 
    ds.ReadXml(file); 
    return ds.Tables["Players"]; 

} 

は、私がやったリストビューを生成するには、以下:

public void generateScoreBoard(DataTable dt) 
     { 
      foreach (DataRow row in dt.Rows) 
      { 
       ListViewItem item = new ListViewItem(row[0].ToString()); 
       for (int i = 1; i < dt.Columns.Count; i++) 
       { 
        item.SubItems.Add(row[i].ToString()); 
       } 
       lvScoreBoard.Items.Add(item); 
      } 
     } 

1つのレベル高いように思わデータテーブルにデータが入力されていて、手を加える前に列を指定していないので、列が作成されません。

答えて

0

は、私はあなたの質問が何であるかに100%明確でないんだけど、あなたのコードを見て、あなたの問題が原因であり得ることあなたのgetTable()メソッドが "Players"という名前のDataTableを返すことはありません(複数の点に注意してください) - "Players"はDataSetの名前で、 "Player"はDataTableの名前です。

返されたDataTableの名前を "Players"から "Player"に変更すると、正常に動作するはずです。

例:

public DataTable getTable() 
{ 
    string file = @"E:\...\Players.xml"; 
    DataSet ds = new DataSet(); 
    ds.ReadXml(file); 
    return ds.Tables["Player"]; // The name of the table in the dataset is "Player" 

} 
+0

ええ、私は実際にはそれを考え出しましたが、私を捨てたのはリストビューです。本当に悪いので....グリッドビューに切り替えます。 書き込みの回答があるので勝ちます! :P –

1

XMLの書式を決定する場合、最も簡単な方法は、いくつかのデータを含むDataTableを作成し、それをXMLにエクスポートすることです。そして、あなたはあなたが戻って読むことができる形式になっています。

私はhere

+0

2不便:データの新しい列が追加されるたび、人が来て、それらを手動で追加しなければならないことです。また、xmlからdatatableへの会話の2-3行分が10倍以上になることは本当に歓迎されません。 –

+0

DataTableで可能な最小限の努力のXMLを使用できるように、DataTableが「好きな」XML形式を表示するだけです。 –

+0

ええ、実際に私はそれを読んで、最も興味深いものを見つけました。ありがとう。 +1 –