阅读wordpress RSS与C#-内容不同
本文关键字:C#- wordpress RSS 阅读 | 更新日期: 2023-09-27 18:24:53
我正在阅读wordpress生成的RSS,并激活全文。在firefox和IE9上,项目数据包含元素content:encoded
:
<content:encoded><![CDATA[bla bla bla]]></content:encoded>
但是当在C#程序中我请求相同的rss url时,该节点不存在。我这样做我的C#请求:
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
client.Headers.Add("Accept", "application/xml");
var xml = client.DownloadString(url)
我是否必须在请求中添加一个标题才能拥有此特定字段?
您不需要WebClient来下载rss。
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");
}
编辑
这个问题与压缩有关。若客户端不支持压缩,则服务器不发送内容。
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();
我猜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'
);
因此尝试接受application/rss+xml
而不是text/xml
。