0

如果标题等于某个东西,我正在尝试从 rss 提要中选择“描述”。

在代码中我有这个:

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

}

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

请帮助某人

4

1 回答 1

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();
于 2012-10-16T14:10:38.407 回答