加载XmlDocument时“解析EntityName时出错”

时间:2011-09-26 08:22:42

标签: c# asp.net xml

我已经编写了一些代码来解析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解析器以使用不同的方法。有关如何绕过此错误的任何建议?有没有办法关闭文件检查?

1 个答案:

答案 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);
}