C# 我正在尝试选择;说明“;如果标题等于某个内容,则从rss源中删除

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

如果标题等于某个内容,我会尝试从rss提要中选择“description”

在代码中,我有:

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();