14

RSSフィードのコンテンツを、コードで操作できるオブジェクトにプルしようとしています。.NET 3.5のSyndicationFeedクラスとSyndicationItemクラスは、1つのことを除いて、必要なことを実行するようです。SyndicationFeedクラスを使用してRSSフィードのコンテンツを読み込もうとするたびに、各SyndicationItemの.Content要素はnullになります。

FeedValidatorを介してフィードを実行し、他のいくつかのソースからのフィードでこれを試しましたが、役に立ちませんでした。

XmlReader xr = XmlReader.Create("http://shortordercode.com/feed/");
SyndicationFeed feed = SyndicationFeed.Load(xr);

foreach (SyndicationItem item in feed.Items)
{
    Console.WriteLine(item.Title.Text);
    Console.WriteLine(item.Content.ToString());
}

Console.ReadLine();

どこかでステップが足りないのではないかと思いますが、これらのクラスを使用してRSSフィードを利用する方法についての優れたチュートリアルが見つからないようです。

編集:SLaksのおかげで、問題はWordPressのコンテンツタグとしての使用にあることがわかりました。これはWPAtomフィードでは問題にならないように思われるので、今のところ解決策として使用します。SLaksに感謝します!

4

4 に答える 4

15

これにより、コンテンツが取得されます。

SyndicationFeed feed = SyndicationFeed.Load(reader);

string content = feed.ElementExtensions.ReadElementExtensions<string>("encoded", "http://purl.org/rss/1.0/modules/content/")
于 2011-01-04T18:27:22.653 に答える
6

これは、コンテンツではなくcontent:encodedであるためです。この場合の内容を読むために、私はこれを使用するつもりです:

    string content="";
    foreach (SyndicationElementExtension ext in item.ElementExtensions)
    {
        if (ext.GetObject<XElement>().Name.LocalName == "encoded")
            content = ext.GetObject<XElement>().Value;
    }
于 2011-06-08T14:35:01.310 に答える
5

私がしたことを見てください:

    XmlReader reader = XmlReader.Create("http://kwead.com/blog/?feed=atom");
    SyndicationFeed feed = SyndicationFeed.Load(reader);
    reader.Close();

    foreach (SyndicationItem item in feed.Items)
    {
        string data = item.PublishDate.ToString();
        DateTime dt = Convert.ToDateTime(data);

        string titulo = " - " + item.Title.Text + "<br>";
        string conteudo = ((TextSyndicationContent)item.Content).Text;

        Response.Write(dt.ToString("d"));
        Response.Write(titulo);
        Response.Write(conteudo);
     }
于 2010-05-29T19:06:35.967 に答える
1

プロパティを使用しSummaryます。

リンクしたRSSフィードは、そのコンテンツを<description>要素に配置します。
文書化<description>されているように、RSSフィードの要素はSummaryプロパティにマップされます。

于 2010-03-15T01:24:08.960 に答える