C# 我正在尝试选择;说明“;如果标题等于某个内容,则从rss源中删除
如果标题等于某个内容,我会尝试从rss提要中选择“description” 在代码中,我有:C# 我正在尝试选择;说明“;如果标题等于某个内容,则从rss源中删除,c#,asp.net,xml,xslt,C#,Asp.net,Xml,Xslt,如果标题等于某个内容,我会尝试从rss提要中选择“description” 在代码中,我有: public static XmlDocument GetDefaultHoroscopesFeed(string StarSign){ xdoc.SelectSingleNode(string.Format("rss/channel/item/[title = '{0}']/description", StarSign)); xdoc.LoadXml(DefaultPageH
public static XmlDocument GetDefaultHoroscopesFeed(string StarSign){
xdoc.SelectSingleNode(string.Format("rss/channel/item/[title = '{0}']/description", StarSign));
xdoc.LoadXml(DefaultPageHoroscopeNode.InnerXml);
return xdoc;
}
但我一直遇到这样的错误:表达式必须计算为节点集
请帮助某人您没有在
../item/
和[title=…
之间指定节点名,因此您将无法返回有效的节点集。此外,在RSS中,
节点将没有名为
的子节点
您需要更改XPath
"rss/channel/item/[title = '{0}']/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();
XDocument xdoc = XDocument.Load(pathToRss);
XElement description = xdoc.Descendants("item")
.Where(i => i.Element("title").Value.Equals(StarSign))
.Select(i => i.Element("description"))
.FirstOrDefault();