我想在 HTML 页面中显示异常跟踪。
一种方法是在异常跟踪中转义 HTML 特殊字符并将其转储到<pre>
标记中。
尽管它有效,但效率极低。我认为一种方法是用 CDATA 包装跟踪。我试过了,但什么都没有显示。
我的问题,这可以做到吗?
这是我微弱的尝试。
<pre><![CDATA[blah, blah, blah with <>
and blah blah blah with &
and more blah, blah]]></pre>
仅当您将页面作为 XML ( application/xhtml+xml
) 提供时,它才会起作用;纯 HTML 中没有 CDATA 部分。大多数 HTML 模式下的浏览器会忽略示例 CDATA 部分。
<![CDATA[
无论如何,将...扔]]>
在一根绳子上并不足以包裹它。如果您的跟踪信息中有序列]]>
,那将结束 CDATA 部分,您将回到同样的问题。因此,您必须至少进行一次转义以应对这种情况,并且如果您无论如何都要进行转义过程,那么您最好进行适当的 HTML 转义。
这就是 CDATA 部分在很大程度上毫无意义的原因。很多人似乎认为它以某种方式免除了他们对逃避问题的思考,但事实并非如此。
无论如何,HTML 转义并不是低效的。这是几个字符串替换。任何网络应用程序(*)都会在每个页面上进行一百次 HTML 转义。再添加一个——尤其是对于效率根本不重要的调试案例!——不是很大的负担。
(*:嗯,除了 PHP 教程中写得很糟糕的应用程序,其作者htmlspecialchars
显然从未听说过。)
是的,但仅在 XHTML 中(理论上,我认为它应该在 HTML 中工作,但网络浏览器处理标签汤而不是 HTML 4.x)而不是如果您将文档作为 text/html 提供(如果您需要,您必须这样做)它可以与 Internet Explorer 一起使用)。
就效率而言,在任何编程语言(或具有查找和替换功能的文本编辑器)中,替换<
和&
用>
它们各自的实体都是一项微不足道的操作,除非在带宽极其有限的情况下,它不会添加大量字节.