我已经编写了一些代码来解析ASP.NET C#应用程序的RSS提要,它适用于我尝试过的所有RSS提要,直到我尝试使用Facebook。
我的代码在下面的最后一行失败了......
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream rss = response.GetResponseStream();
XmlDocument xml = new XmlDocument();
xml.Load(rss);
...错误“解析EntityName时出错。第12行,第53位。”
很难弄清楚XML文件的位置是什么,因为整个文件都在一行中,但它直接来自Facebook,所有字符似乎都被正确编码,除了可能是一个字符(♥)。
我并不特别想重写我的RSS解析器以使用不同的方法。有关如何绕过此错误的任何建议?有没有办法关闭文件检查?
答案 0 :(得分:1)
查看下载的流。它不包含RSS提要,而是包含有关不兼容浏览器的消息的HTML页面。这是因为在下载这样的网址时,未设置the user agent header。如果你这样做,你的代码应该有效:
var request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "MyApplication";
var xml = new XmlDocument();
using (var response = request.GetResponse())
using (var rss = response.GetResponseStream())
{
xml.Load(rss);
}