Чтение XML в C#
-
29-09-2019 - |
Вопрос
Я использую 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 -тегов, называемых заголовком в моем файле, я хотел бы прочитать только те, что внутри <entry></entry>
?
Решение
Видеть ParentNode и Локальное имя характеристики:
if (title.ParentNode.LocalName == "entry") { ... }
Другие советы
Обычно его проще в использовании 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);
}
Я предлагаю использовать XDocument
в System.Xml.Linq
Пространство имен.
Тогда вы можете просто написать document.Elements("entry").Elements("title")
Вы пробовали что -то вроде входа/заголовка в качестве XPath?
Вот подсказка: посмотрите, как вы переворачиваете через первый узел «заголовок».