C# 在C中读取XML#

C# 在C中读取XML#,c#,xml,foreach,getelementsbytagname,xmlnodelist,C#,Xml,Foreach,Getelementsbytagname,Xmlnodelist,我正在使用System.Xml读取C#中的Xml文件。 首先,我打开文件(本地)。。。并使用foreach获取值,如下所示: XmlNodeList titles = xmlDoc.GetElementsByTagName("title"); foreach (XmlNode title in titles) { rowNews = new ListViewItem(); rowNews.Text = (title.ChildNodes[0].Value); listView1.Items.Ad

我正在使用System.Xml读取C#中的Xml文件。 首先,我打开文件(本地)。。。并使用foreach获取值,如下所示:

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

问题是,我的文件中有许多名为title的rss标记,我只想读取其中的内容。

这里有一个提示:看看您是如何迭代第一个“title”节点的。

您是否尝试过类似entry/title的东西作为xpath?

请参阅和属性:

if (title.ParentNode.LocalName == "entry") { ... }
通常在这种情况下更容易使用,因此您的代码如下所示:

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

我建议在
System.Xml.Linq
名称空间中使用
XDocument


然后您只需编写
document.Elements(“条目”).Elements(“标题”)

谢谢您,先生,我最喜欢您的方式,而且效果很好!也谢谢大家!XPath方法也很好。如果您熟悉DOM而不熟悉XPath,那么这只是一种更简单的方法。