【问题标题】:Reading an XML in C#在 C# 中读取 XML
【发布时间】:2011-04-24 10:09:27
【问题描述】:

我正在使用 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);
}

问题是,我的文件中有很多名为 title 的 rss 标签,我只想阅读 <entry></entry> 中的那些标签?

【问题讨论】:

    标签: c# xml foreach getelementsbytagname xmlnodelist


    【解决方案1】:

    在这种情况下,通常更容易使用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);
    }
    

    【讨论】:

      【解决方案2】:

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

      那你可以直接写document.Elements("entry").Elements("title")

      【讨论】:

        【解决方案3】:

        查看ParentNodeLocalName 属性:

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

        【讨论】:

        • 谢谢您,先生,我最喜欢您的方式,而且效果很好!也谢谢大家!
        • XPath 方法也很好。如果您熟悉 DOM 而不是 XPath,这只是一种更简单的处理方式。
        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          这里有个提示:看看你是如何遍历第一个“title”节点的。

          【讨论】:

            猜你喜欢
            • 2017-02-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多