Module java.xml
Package org.w3c.dom

Interface CDATASection

所有超级接口:
CharacterData, Node, Text

public interface CDATASection extends Text
CDATA部分用于转义包含否则将被视为标记的字符的文本块。在CDATA部分中唯一被识别的分隔符是结束CDATA部分的“]]>”字符串。CDATA部分不能被嵌套。它们的主要目的是包含诸如XML片段之类的材料,而无需转义所有分隔符。

CharacterData.data属性保存由CDATA部分包含的文本。请注意,这个文本可能包含需要在CDATA部分之外转义的字符,并且根据选择的用于序列化的字符编码(“charset”),可能无法将某些字符作为CDATA部分的一部分写出。

CDATASection接口通过Text接口从CharacterData接口继承。相邻的CDATASection节点不会通过Node接口的normalize方法合并。

对CDATA部分的内容不进行词法检查,因此在内容中可能存在字符序列"]]>",这在CDATA部分中是非法的,根据[XML 1.0]第2.7节。在序列化过程中,这个字符序列的存在必须生成致命错误,或者在序列化之前必须拆分cdata部分(还请参阅DOMConfiguration接口中的"split-cdata-sections"参数)。

注意: 因为在CDATASection中不识别任何标记,所以在序列化时不能使用字符数值引用作为转义机制。因此,在使用某些字符编码时,需要在序列化CDATASection时采取行动,其中一些包含的字符无法表示。如果不这样做,将无法生成格式良好的XML。

注意: 在序列化过程中的一个潜在解决方案是在字符之前结束CDATA部分,使用字符引用或实体引用输出字符,并为文本节点中的任何进一步字符打开一个新的CDATA部分。但请注意,一些代码转换库在撰写时并不在字符缺失时返回错误或异常,这使得在序列化过程中确保数据不被损坏的任务更加困难。

另请参阅文档对象模型(DOM)Level 3 Core规范