如果标题等于某事,我试图从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;
}
但我不断收到此错误:表达式必须评估为节点集。
请帮助某人
答案 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();