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"

これにより、値が StarSign のノード<item>を持つ<title>ノードが取得され、その<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 に答える