C # LINQ - чтение XML - PullRequest
       11

C # LINQ - чтение XML

2 голосов
/ 30 апреля 2009

Мне нужно хранить всю информацию из XML в массиве. Мой код не работает, потому что я всегда получаю только первый элемент из XML.

Кто-нибудь знает, как это исправить?

            XDocument xdoc = XDocument.Load("http://www.thefaxx.de/xml/nano.xml");
        var items = from item in xdoc.Descendants("items")
                    select new
                    {
                        Title = item.Element("item").Element("title").Value,
                        Description = item.Element("item").Element("description").Value
                    };

        foreach (var item in items)
        {
            listView1.Items.Add(item.Title);
        }

1 Ответ

4 голосов
/ 30 апреля 2009

Как насчет:

    var items = from item in xdoc.Descendants("item")
                select new
                {
                    Title = item.Element("title").Value,
                    // *** NOTE: xml has "desc", not "description"
                    Description = item.Element("desc").Value
                };

Трудно быть уверенным немного без образца XML - но похоже, что вы намереваетесь перебрать все элементы <item>...</item> - что и делает вышеприведенное. Ваш исходный код зацикливается на элементах (single?) <items>...</items>, а затем извлекает из него первые <item>...</item>.


редактировать после просмотра xml; это было бы более эффективно:

    var items = from item in xdoc.Root.Elements("item")
                select new {
                    Title = item.Element("title").Value,
                    Description = item.Element("desc").Value
                };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...