2010-05-11 4 views
0

J'ai posté la même question here et j'ai aussi quelques bonnes réponses. Pendant que j'essayais les mêmes réponses, je recevais des erreurs de compilation. Plus tard, j'ai appris que nous utilisons .NET 2.0 et notre application existante n'a aucune référence aux fichiers LINQ.Parse XML et remplir dans la zone de liste

Après avoir cherché à SO, j'ai essayé de a compris en partie:

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

Parsing:

 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"; 

Comment lire deux nœuds enfants - SEL et la valeur du noeud et alimenter le même dans la nouvel article DTO ??

Répondre

2

Vous pouvez le faire comme ceci:

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"; 
Questions connexes