【问题标题】:"An error occurred while parsing EntityName" while Loading an XmlDocument加载 XmlDocument 时出现“解析 EntityName 时出错”
【发布时间】:2011-09-26 08:22:41
【问题描述】:

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

【问题讨论】:

  • 是否需要字符集定义?在我将字符集定义添加到文件顶部之前,我的 XML 文件(不是 RSS)无法正常工作。虽然如果你收到这个不应该已经有一个?!也许你可以发布数据。
  • 看起来它有一个编码!对你没用,但是是的,我在同一个位置出现错误。

标签: c# asp.net xml


【解决方案1】:

查看下载的流。它不包含 RSS 提要,而是包含有关不兼容浏览器的消息的 HTML 页面。那是因为下载这样的URL时,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);
}

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2023-03-06
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多