2010-05-10 6 views
0

Je suis un débutant à C#. Je veux développer C# List box in Windows Form. J'ai trouvé this lien pour être utile. Mais l'entrée de la zone de liste sera un XML du format suivant:Analyser XML et remplir dans la zone de liste

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

Le XML doit être analysé et doit être rempli dans la zone de liste. Lorsqu'un élément particulier de la liste est sélectionné, son code doit être renvoyé (c'est-à-dire la valeur du noeud SEL).

Tout pointeur/suggestion permettant d'analyser et d'afficher efficacement dans la liste.

Le XML provient de SAP et devrait contenir environ 300 à 400 enregistrements.

Répondre

3

Vous pouvez utiliser Linq to XML pour faire comme ça.

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, vous pouvez le faire:

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

et quelque part dans votre code:

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 }); 
} 

puis assignons à votre listbox:

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

Cela devrait le faire!

Questions connexes