Чтение XML в C # - PullRequest
       34

Чтение XML в C #

2 голосов
/ 12 октября 2010

Я использую System.Xml для чтения XML-файла в C #.Сначала я открываю файл (локально) ... и использую foreach для получения значений, например:

XmlNodeList titles = xmlDoc.GetElementsByTagName("title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}

Проблема в том, что у меня есть много rss-тегов с названием title в моем файле, я хотел бычитать только те, которые находятся внутри <entry></entry>?

Ответы [ 5 ]

7 голосов
/ 12 октября 2010

Обычно в этом случае проще XPaths , поэтому ваш код будет выглядеть примерно так:

XmlNodeList titles = xmlDoc.SelectNodes("//entry/title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}
1 голос
/ 12 октября 2010

Я предлагаю использовать XDocument в пространстве имен System.Xml.Linq.

Тогда вы можете просто написать document.Elements("entry").Elements("title")

0 голосов
/ 12 октября 2010

Вы пробовали что-то вроде записи / заголовка в качестве xpath?

0 голосов
/ 12 октября 2010

См. ParentNode и LocalName Свойства:

if (title.ParentNode.LocalName == "entry") { ... }
0 голосов
/ 12 октября 2010

Вот подсказка: посмотрите, как вы проходите через первый «титульный» узел.

...