解析XML并在List Box中填充

时间:2010-05-10 18:43:58

标签: c# .net xml winforms listbox

我是C#的新手。

我想制定C# List box in Windows Form.我发现this链接有帮助。 但是List列表框的输入将是以下格式的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节点的值)。

任何有关如何有效解析并在List中显示的指针/建议。

XML来自SAP,预计会有大约300到400条记录。

2 个答案:

答案 0 :(得分: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 :(得分:1)

使用Linq-to-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";

应该这样做!