解析XML并填充到列表框中

问题描述:

我发布了相同的问题here,我也得到了一些很好的答案。当我尝试相同的答案时,我收到编译错误。后来我才知道我们使用的是.NET 2.0,我们现有的应用程序没有提及LINQ文件。解析XML并填充到列表框中

SO搜索后,我试图想出部分:

public partial class Item 
    { 
     public object CHK { get; set; } 
     public int SEL { get; set; } 
     public string VALUE { get; set; } 
    } 

解析:

 XmlDocument doc = new XmlDocument(); 
     doc.LoadXml("<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>");    
     List<Item> _lbList = new List<Item>(); 
     foreach (XmlNode node in doc.DocumentElement.ChildNodes) 
     { 
      string text = node.InnerText; //or loop through its children as well 
      //HOW - TO - POPULATE THE ITEM OBJECT ?????? 
     } 
     listBox1.DataSource = _lbList; 
     listBox1.DisplayMember = "VALUE"; 
     listBox1.ValueMember = "SEL"; 

如何阅读两个子节点 - SEL和节点的值,并填充在同一新项目DTO?

你可以做到这一点就像这样:

XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(@"<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>");    

    List<Item> _lbList = new List<Item>(); 
    foreach (XmlNode node in doc.DocumentElement.ChildNodes) 
    { 
     string chk = node.ChildNodes[0].InnerText; 
     int sel = int.Parse(node.ChildNodes[1].InnerText); 
     string value = node.ChildNodes[2].InnerText; 

     Item item = new Item(); 
     item.CHK = chk; 
     item.VALUE = value; 
     item.SEL = sel; 

     _lbList.Add(item); 
    } 
    listBox1.DataSource = _lbList; 
    listBox1.DisplayMember = "VALUE"; 
    listBox1.ValueMember = "SEL";