2010-05-10 58 views
0

我是C#的新手。解析XML並填充到列表框中

我想開發C# List box in Windows Form.我找到this有幫助的鏈接。 但輸入到列表框中將是以下格式的XML:

<LISTBOX_ST> 
<item><CHK></CHK><SEL>00001</SEL><VALUE>val01</VALUE></item> 
<item><CHK></CHK><SEL>00002</SEL><VALUE>val02</VALUE></item> 
<item><CHK></CHK><SEL>00003</SEL><VALUE>val03</VALUE></item> 
<item><CHK></CHK><SEL>00004</SEL><VALUE>val04</VALUE></item> 
<item><CHK></CHK><SEL>00005</SEL><VALUE>val05</VALUE></item> 
</LISTBOX_ST> 

的XML已被解析並應在列表框中進行填充。當選擇列表中的特定項目時,應該返回CODE(即SEL節點的值)。

任何指針/建議如何有效地解析和顯示在列表中。

XML來自SAP,預計會有大約300到400條記錄。

回答

3

你可以使用Linq to XML來做到這一點。

XDocument xmldoc = XDocument.Load(xmlStream); 
var items = (from i in xmldoc.Descendants("item") 
      select new { Item = i.Element("SEL").Value, Value = i.Element("VALUE").Value }).ToList(); 

listBox1.DataSource = items; 
listBox1.DisplayMember = "Item"; 
listBox1.ValueMember = "Value"; 
1

使用LINQ到XML,你可以這樣做:

public partial class item 
{ 
    public object CHK { get; set; } 
    public int SEL { get; set; } 
    public string VALUE { get; set; } 
} 
在你的代碼

和地方:

XDocument lbSrc = XDocument.Load("yourfile.xml"); 

List<item> _lbList = new List<item>(); 

foreach (XElement item in lbSrc.Descendants("item")) 
{ 
    _lbList.Add(new item { CHK= item.Element("CHK").Value, 
          SEL = Convert.ToInt32(item.Element("SEL").Value), 
          VALUE = item.Element("VALUE").Value }); 
} 

,然後分配,爲您的列表框:

lbYourListbox.DataSource = _lbList; 
lbYourListbox.DisplayMember = "VALUE"; 
lbYourListbox.ValueMember = "SEL"; 

這應該做到!