2012-01-16 62 views
0

將xml導入到數據表中比在listview中查看xml有困難。xml到數據表

<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); 
      } 
     } 

這在我看來,有一個水平錯過了在數據表中輸入的數據,並且沒有在手工指定列前進行指定,所以它不會創建列。

回答

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

是的,我實際上已經想出了一段時間後,但是什麼讓我失望是listview顯示它真的很糟糕....所以我切換到網格視圖。 你得到了答案,所以你贏了! :P – 2012-01-16 19:43:44

1

如果您決定使用XML的格式,最簡單的方法是先創建一個帶有數據的DataTable並將其導出到XML。然後你就會有,你可以在回讀的格式。

我做here

+0

2不便:是,每當新的數據列將被添加,該人將必須來手動添加它們。另外,對於從xml到數據表格的2-3行對話是10倍以上的並不真正歡迎。 – 2012-01-17 16:59:43

+0

這只是爲了向您展示DataTable「喜歡」什麼XML格式,以便您儘可能使用DataTable讀取XML的最小努力。 – 2012-01-17 18:41:18

+0

是的,其實我讀過它,發現最有趣。謝謝。 +1 – 2012-01-17 18:52:06