2014-12-03 208 views
0

Total C#初學者在這裏工作我的第一個簡單的任務列表應用程序從一個Windows窗體。將XML數據添加到列表框

我想從一個XML文件導入數據到一個列表框,但是我一直遇到問題,而不是實際的數據(例如「拾取食品雜貨」,「修理車」,「讓這個更好! )我不斷收到很多其他數據,如「

DocumentProperties xmlns="um.schemas-microsoft-come:office:office" 

....等

我開始通過加載對話框,選擇文件(保存爲字符串‘文件’)。

然後我的代碼;

XDocument doc = XDocument.Load(file); 

foreach (XElement el in doc.Root.Elements()) 
{ 
    el.ToString(); 
    var task = el; 
    listBox1.Items.Add(task); 
} 

我已經嘗試了幾種不同的方法,沒有從我的測試xml文件中讀取運氣。有沒有簡單的我失蹤?

在此先感謝您的幫助。

+0

您可以添加XML源? – Johnny 2014-12-03 12:20:32

回答

0

你的錯誤是你沒有爲你的根xml文檔指定TagName。 這是一個例子,如何讀取XML文件:

我的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<head> 
    <Config> 
     <port>80</port> 
     <thread>5</thread> 
     <gSave>0</gSave> 
     <bSave>0</bSave> 
    </Config> 
</head> 

和示例如何讀取XML:

protected string[] Config() 
     { 
      var retStrings = new[] {"","","",""}; 
      var xd = new XmlDocument(); 
      var fs = new FileStream("data/config.xml", FileMode.Open); 
      xd.Load(fs); 

      var list = xd.GetElementsByTagName("Config"); 
      for (var i = 0; i < list.Count; i++) 
      { 
       retStrings[0] = xd.GetElementsByTagName("port")[i].InnerText; 
       retStrings[1] = xd.GetElementsByTagName("thread")[i].InnerText; 
       retStrings[2] = xd.GetElementsByTagName("gSave")[i].InnerText; 
       retStrings[3] = xd.GetElementsByTagName("bSave")[i].InnerText; 
      } 

      fs.Close(); 

      return retStrings; 
     } 

如果你能告訴我你的XML文件,我會給你一個具體的例子。

+0

感謝您的回答,它指出了我非常愚蠢的假設。我在Excel中創建了我的XML文件,因爲我認爲這是如何完成的......如果我在記事本中這樣做,那很好。我想我需要一本'假人指南'! – Gemack 2014-12-03 12:45:55

+0

不客氣,祝你的項目順利! – Johnny 2014-12-03 12:56:09

0

嘗試下面的代碼片段..

DataSet ds = new DataSet(); 
ds.ReadXml(@"C:\demo.xml"); 

    if (ds.Tables.Count > 0) 
{ 
    for (int i = 0; i < ds.Tables[0].Rows.Count; i++) 
    { 
     for (int j = 0; j < ds.Tables[0].Columns.Count; j++) 
      { 
      listBox1.Items.Add(ds.Tables[0].Rows[i][j].ToString()); 
      } 
    } 
}