Подпункты не все добавляются в представление списка в C # с использованием XmlNodeList - PullRequest
0 голосов
/ 09 января 2011

Я работаю над извлечением данных из RSS-канала. В моем списке просмотра (rowNews) у меня есть два столбца: заголовок и URL. При нажатии кнопки все заголовки статей отображаются в столбце заголовка, но в столбец URL добавляется только один URL. Я переключил их так, чтобы URL-адреса были добавлены в первый столбец, и все правильные URL-адреса появились ... что привело меня к мысли, что это проблема с моим источником списка просмотра (я впервые работаю с подпунктами). Вот оригинал, прежде чем я начал экспериментировать с заказом:

private void button1_Click(object sender, EventArgs e)
        {

            XmlTextReader rssReader = new XmlTextReader(txtUrl.Text);
            XmlDocument rssDoc = new XmlDocument();
            rssDoc.Load(rssReader);
            XmlNodeList titleList = rssDoc.GetElementsByTagName("title");
            XmlNodeList urlList = rssDoc.GetElementsByTagName("link");
            ListViewItem lvi = new ListViewItem();

             for (int i = 0; i < titleList.Count; i++)
             {
                 rowNews.Items.Add(titleList[i].InnerXml);
             }

             for (int i = 0; i < urlList.Count; i++)
             {
                 lvi.SubItems.Add(urlList[i].InnerXml);
             }

             rowNews.Items.Add(lvi);
        }

Ответы [ 2 ]

2 голосов
/ 10 января 2011

Рассматривали ли вы работу с фидом через пространство имен System.ServiceModel.Syndication, классы SyndicationFeed и SyndicationItem предоставляют все свойства, которые вам нужны, и легко связываются с элементами пользовательского интерфейса как объекты POCO.

 using (XmlReader reader = XmlReader.Create(Settings.Default.ExchangeRateFeed))
        {
            SyndicationFeed feed = SyndicationFeed.Load(reader);

            if (feed != null)
            {
                foreach (var item in feed.Items)
                {
                    // Code to obtain required properties
                }
            }
        }
2 голосов
/ 09 января 2011

Я думаю, вы должны изменить свой код на что-то вроде этого (не проверено)

         // ListViewItem lvi = new ListViewItem();

         for (int i = 0; i < titleList.Count; i++)
         {
            ListViewItem lvi = rowNews.Items.Add(titleList[i].InnerXml);
            lvi.SubItems.Add(urlList[i].InnerXml);
         }

         // rowNews.Items.Add(lvi);
...