为什么我的浏览器将 XML 文件显示为空白页?

为什么我的浏览器将 XML 文件显示为空白页?

每次打开 XML 文件时,我得到的都是空白页而不是标签树。文件本身是正确的,加载正常,我可以通过查看源代码或在 Firebug 中看到它。我尝试关闭所有插件,并尝试在安全模式下运行 Firefox,但问题并未解决。

我猜可能是我弄乱了配置,Firefox 现在试图将 XML 文件渲染为 HTML 文件。我尝试谷歌搜索,但没有成功。请帮忙?

UPD:示例文件:http://lj.lain.ru/3/1273657698603.sample.xml 我还注意到,不知何故,机器上的所有浏览器现在都表现相同,因此我相应地更改了问题

答案1

如果 XML 文件格式不正确,那么浏览器将不知道如何处理它,并且根据我的经验,它什么也不会显示。

如果 XML 文件是valid,那么大多数浏览器(IE8、Chrome 和 Firefox)都会给出类似的消息This XML file does not appear to have any style information associated with it. The document tree is shown below.,并进入一种特殊模式来显示 XML 文件,并具有能够折叠代码块等功能。

看这里:XML 验证器

答案2

我刚刚遇到并解决了一个类似的问题:从我的 ASP.NET MVC 应用程序中,我有一个控制器,它返回原始 XML,我希望在 Web 浏览器中将其视为 DOM 树。

Chrome 可以很好地完成此操作,但 IE 11 仅显示一个空白页。

问题似乎出在“Content-Type”HTTP 标头上:如果它不包含字符集值,IE 只会显示一个空白页(除非您有一个 Content-Disposition 标头,在这种情况下 IE 会建议您保存 XML)。

因此,以下 HTTP 响应对于 Chrome 来说没有问题,但 IE 却显示空白页:

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/xml
Server: Microsoft-IIS/8.0
Date: Fri, 25 Jul 2014 14:29:02 GMT
Content-Length: 693

<?xml version="1.0" encoding="utf-16"?><data>...</data>

注意:请确保提供正确的 Content-Length,尽管我没有测试如果 Content-Length 标头缺失或值错误会发生什么。此外,我从此打印输出中删除了 IIS 生成的 X- 标头,但保留它们是安全的。


但以下在 IE 和 Chrome 下都可以使用

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/xml; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Fri, 25 Jul 2014 14:29:02 GMT
Content-Length: 693

<?xml version="1.0" encoding="utf-16"?><data>...</data>

; charset=utf-8唯一的区别是在 Content-Type 标头中添加了。

对于 ASP.NET MVC 开发人员来说,这意味着如果您想要呈现原始 XML 并支持 IE,则不能使用:

string xmldata = ...
return this.File(Encoding.UTF8.GetBytes(xmldata), "application/xml");

相反,下面的方法有效:

string xmldata = ...
Response.ContentType = "application/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.AddHeader("Content-Length", Convert.ToString(xmldata.Length));
return this.Content(xmldata);

亲切的问候。

答案3

这是 Firefox 特有的,但我认为值得一试:

转到 Firefox 菜单上的“帮助\疑难解答信息”,然后单击按钮打开包含您的配置文件的文件夹。

备份然后删除 mimeTypes.rdf 文件,关闭所有 Firefox 实例并再次打开 Firefox。

这将强制 FF 重新生成它所知道的 MIME 类型的默认操作,如果问题是由 FF 正在执行的某些奇怪的操作引起的,这可能会解决问题。

答案4

xml 顶部是否有类似这样的标签?

<?xml version="1.0"?>

这将使浏览器做好准备,以便它知道该做什么。

相关内容