我想尝试从rss feed中选择“description”,如果标题等于某事

时间:2012-10-16 13:56:22

标签: c# asp.net xml xslt

如果标题等于某事,我试图从rss Feed中选择“description”。

代码中的

我有这个:

public static XmlDocument GetDefaultHoroscopesFeed(string StarSign){
 xdoc.SelectSingleNode(string.Format("rss/channel/item/[title = '{0}']/description", StarSign));
            xdoc.LoadXml(DefaultPageHoroscopeNode.InnerXml);
            return xdoc;

}

但我不断收到此错误:表达式必须评估为节点集。

请帮助某人

1 个答案:

答案 0 :(得分:0)

您未在.../item/[title = ...之间指定节点名称,因此您将无法获得有效的节点集。此外,在RSS中,<title>节点将没有名为<description>的子节点。

您需要更改XPath

"rss/channel/item/[title = '{0}']/description"

进入

"rss/channel/item[title = '{0}']/description"

这将为<item>节点提供一个<title>节点,其值为StarSign,然后检索其<description>节点。

您也可以使用XDocument和Linq to XML来执行此操作,如下所示:

XDocument xdoc = XDocument.Load(pathToRss);
XElement description = xdoc.Descendants("item")
    .Where(i => i.Element("title").Value.Equals(StarSign))
    .Select(i => i.Element("description"))
    .FirstOrDefault();