Разобрать XML и заполнить в списке - PullRequest
0 голосов
/ 10 мая 2010

Я новичок в C #.

Я хочу разработать C# List box in Windows Form. Я нашел эту ссылку полезной. Но вход в поле списка будет 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 должен быть проанализирован и должен быть заполнен в списке. Когда выбран конкретный элемент в списке, его код должен быть возвращен (т. Е. Значение узла SEL).

Любые указатели / предложения о том, как эффективно анализировать и отображать в списке.

XML приходит из SAP и ожидает около 300-400 записей.

Ответы [ 2 ]

3 голосов
/ 10 мая 2010

Вы можете использовать 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 голос
/ 10 мая 2010

Используя 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";

Это должно сделать это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...