Html “上的自定义页面或操作”;XML解析错误“; 问题:

Html “上的自定义页面或操作”;XML解析错误“; 问题:,html,xhtml,Html,Xhtml,当发生XML解析错误时,是否可以通过HTTP头或htmlcode告诉浏览器该怎么做?比如可能X-onxmlparsingeror,等 附加信息 更多信息:我使用application/XHTML+xml头生成XHTML代码发送到浏览器。因此,当我的xhtml代码出现问题时,浏览器会显示XML解析错误,而不是我漂亮的网页,这是预期的行为。但我想更改它,并告诉每个浏览器在出现此错误时该做什么。例如,重定向到格式不正确的自定义页面,并发送一些友好消息 我知道我可以在服务器端解析输出代码,但我不想这样。

当发生
XML解析错误时,是否可以通过
HTTP头
html
code告诉浏览器该怎么做?比如可能
X-onxmlparsingeror

附加信息 更多信息:我使用
application/XHTML+xml
头生成
XHTML
代码发送到浏览器。因此,当我的
xhtml
代码出现问题时,浏览器会显示
XML解析错误,而不是我漂亮的网页,这是预期的行为。但我想更改它,并告诉每个浏览器在出现此错误时该做什么。例如,重定向到格式不正确的自定义页面,并发送一些友好消息

我知道我可以在服务器端解析输出代码,但我不想这样。它的效率非常低,而且出现不适的错误代码的概率是。。。几乎为0,但仍然是

浏览器 歌剧院 :

(…)我们决定停止抛出严厉的XML解析失败错误消息,而是尝试将文档自动重新解析为HTML。现在不再在浏览器中显示错误消息,而是将其转储到控制台,因此作为开发人员,您仍然可以在Opera Dragonfly和错误控制台中找到XML解析错误警告(如果需要)

火狐 产生

<parserror>(...)</parseerror>


我强烈建议阅读已接受答案下的注释。

为什么不通过XMLHttpRequest(或早期IE回退)检索XHTML,并检查您请求xmlhttp.resposeXML的能力。如果这样做会引发异常或返回null,请重定向到错误页面。否则,使用window.onload=function(){document.write(xmlhttp.responseText);}重写文档

好主意。但我不相信在客户端可以做任何事情。这是一个非常好的解决方案,至少对于一次正确加载的页面。如果中断的代码是第一个请求响应的一部分,该怎么办?无论如何,多亏了你,我才可以将我的服务器端解决方案用于非ajax请求。你对非ajax请求的响应是否可以是一个简单的静态页面,只需在URL上附加一个特殊字段,然后使用该字段为真实页面发出ajax请求?这似乎解决了“第一个请求”的问题。听起来也不错,但如果用户打开了JavaScript,如何在第一个请求中识别?说服用户点击
中的特殊链接是我目前唯一的解决方案。还有其他的吗?您可以将
放在
部分,如果启用了javascript,它将被忽略。。。但是它实际上不是一个静态页面,因为noscript.html需要被实际请求加上另一个字段替换。哈!说得好。我想您可以查看HTTP请求中的用户代理,如果它包含“bot”,则返回XHTML。据介绍,网络爬虫通常在其用户代理字段中包含“bot”。
<?php
// returns 1 on success and 0 on failure
xml_parse(xml_parser_create(), $stringWithHtmlCode) == 1