模块  java.xml
软件包  org.w3c.dom

Interface CDATASection

  • All Superinterfaces:
    CharacterDataNodeText

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

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

    CharacterData接口通过CDATASection接口继承Text接口。 通过使用Node接口的normalize方法未合并相邻的CDATASection节点。

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

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

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

    另见Document Object Model (DOM) Level 3 Core Specification