2010-10-12 6 views
2

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

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>?

ответ

0

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

if (title.ParentNode.LocalName == "entry") { ... } 
+0

Спасибо, сэр, мне нравится ваш путь самое лучшее, и это работает! Спасибо вам всем! –

+0

Подходы XPath тоже хороши. Это просто более простой способ сделать что-либо, если вы знакомы с DOM, а не с XPath. – LarsH

0

Вот подсказка: посмотрите, как вы перебираете первый узел «title».

0

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

7

Обычно его легче использовать 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

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

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