我在Java工作,我有这个例子:
但是当我想显示最终的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不会向我显示任何特殊字符?
答案 0 :(得分:1)
在HTML中,CDATA部分只能出现在foreign XML elements内,而且只能出现在相对现代的浏览器中。
CDATA部分只能用于外国内容(MathML或SVG)。
CDATA部分也存在问题,因为没有简单的方法来呈现其值包含字符串"]]>"
的CDATA部分。
由于这两个原因,大多数HTML渲染器会将CDATA部分转换为常规实体转义文本节点。
<p>
<![CDATA[à]]>
<![CDATA[ò]]>
<![CDATA[è]]>+
<![CDATA[ì]]>
</p>
这些CDATA部分不是外部XML。它们位于常规HTML <p>
元素中,因此不允许使用。
使用这些带重音的元音避免编码问题的最简单方法是使用HTML数字字符引用:
<p> à ò è+ ì </p>
应与原始版本等效(后标准化)。