2012-02-17 12 views
0

私はフルテキストを有効にしてwordpressによって生成されたRSSを読み込もうとしています。C#でWordPressを読む - 内容が異なる

<content:encoded><![CDATA[bla bla bla]]></content:encoded>    

が、C#プログラムでIは同じRSS URLを要求すると、このノードが存在しない:FirefoxとIE9の項目データ要素content:encodedを含有します。私はこのような私のC#の要求を実行します。

WebClient client = new WebClient(); 
    client.Encoding = Encoding.UTF8; 
    client.Headers.Add("Accept", "application/xml"); 
    var xml = client.DownloadString(url) 

私はこの特定のフィールドを持つように要求にヘッダを追加する必要がありますか?

答えて

5

rssをダウンロードするためにWebClientは必要ありません。

XDocument wp = XDocument.Load("http://wordpress.org/news/feed/"); 
XNamespace ns = XNamespace.Get("http://purl.org/rss/1.0/modules/content/"); 

foreach (var content in wp.Descendants(ns + "encoded")) 
{ 
    Console.WriteLine(System.Net.WebUtility.HtmlDecode(content.Value)+"\n\n"); 
} 

EDIT

問題は、圧縮と関連しています。クライアントが圧縮をサポートしていない場合、サーバーはコンテンツを送信しません。

WebClient web = new WebClient(); 
web.Headers["Accept-Encoding"] = "gzip,deflate,sdch"; 

var zip = new System.IO.Compression.GZipStream(
    web.OpenRead("http://www.whiskymag.fr/feed/?post_type=sortir"), 
    System.IO.Compression.CompressionMode.Decompress); 

string rss = new StreamReader(zip, Encoding.UTF8).ReadToEnd(); 
+0

コンテンツ:エンコードされたままではありません – Gregoire

+0

@Gregoire、上の例が動作します。私は投稿する前にそれを試した。別のURLを使用していますか? –

+0

URLを試しました:http://www.whiskymag.fr/feed/?post_type=sortir – Gregoire

0

私はWordpressがAcceptヘッダーに基づいて "間違った"出力形式を選択していると思います。どのフィードが使用されている/wp-content/feed.phpで決定されます。

$types = array(
    'rss' => 'application/rss+xml', 
    'rss2' => 'application/rss+xml', 
    'rss-http' => 'text/xml', 
    'atom' => 'application/atom+xml', 
    'rdf' => 'application/rdf+xml' 
); 

ので、代わりのtext/xmlapplication/rss+xmlを受け入れてみてください。

+0

私はapplication/rss + xml(およびapplication/rdf + xml)を試しましたが、コンテンツノードはここにはまだありません!アカウント内で使用される別のヘッダがありますか? – Gregoire

関連する問題