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

Я отправил тот же вопрос здесь , и у меня также есть пара хороших ответов. Пока я пытался получить те же ответы, я получал ошибки компиляции. Позже я узнал, что мы используем .NET 2.0, и наше существующее приложение не имеет ссылок на файлы LINQ.

После поиска в 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 и VALUE узла и заполнять одинаково в новом Item DTO ??

1 Ответ

2 голосов
/ 11 мая 2010

Вы можете сделать это так:

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