1

我在 Java 中工作,我有这个例子:

http://jsfiddle.net/uAQ94/1/

但是当我想显示最终的 HTML 时,我看不到 CDATA 标记包围的特殊字符。例如:

<![CDATA[à]]  not show the à character

我需要理解这一点,因为我必须执行这段代码:

    try {
        DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = builder.parse(new StringBufferInputStream(escapedStr));
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(doc, null);
        renderer.layout();
        OutputStream os = response.getOutputStream();
        renderer.createPDF(os);
        os.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }

获取pdf页面。

为什么 CDATA 不显示任何特殊字符?

4

1 回答 1

1

在 HTML 中,CDATA 部分只能出现在外部 XML 元素中,而且只能出现在相对现代的浏览器中。

第 12.1.5 节

CDATA 部分只能用于外来内容(MathML 或 SVG)。

CDATA 部分也存在问题,因为没有简单的方法来呈现其值包含 string 的 CDATA 部分"]]>"

由于这两个原因,大多数 HTML 渲染器会将 CDATA 部分转换为常规实体转义文本节点。


<p>
  <![CDATA[à]]>
  <![CDATA[ò]]>
  <![CDATA[è]]>+
  <![CDATA[ì]]>
</p>

这些 CDATA 部分不在外部 XML 中。它们位于常规 HTML<p>元素中,因此是不允许的。

使用这些重音元音避免编码问题的最简单方法是使用 HTML 数字字符引用:

<p> &#224; &#242; &#232;+ &#236; </p>

应该与您的原始文件等效(标准化后)。

于 2013-04-14T18:43:41.883 回答