Module java.xml
Package org.w3c.dom

Interface Text

所有超级接口:
CharacterData, Node
所有已知子接口:
CDATASection

public interface Text extends CharacterData
Text接口继承自CharacterData,表示ElementAttr中的文本内容(在XML中称为字符数据)。如果元素内容中没有标记,文本内容将包含在实现Text接口的单个对象中,该对象是元素的唯一子元素。如果存在标记,则将其解析为信息项(元素、注释等)和形成元素子节点列表的Text节点。

当文档首次通过DOM可用时,每个文本块只有一个Text节点。用户可以创建相邻的Text节点,表示给定元素的内容而没有任何中间标记,但应注意在XML或HTML中无法表示这些节点之间的分隔,因此它们通常不会在DOM编辑会话之间保留。 Node.normalize()方法将任何这样相邻的Text对象合并为每个文本块的单个节点。

Text节点的内容不进行词法检查,并且根据其在文档中的位置,某些字符必须在序列化时使用字符引用进行转义;例如,如果文本内容是元素或属性的一部分,则字符"<&",如果是元素的一部分,则字符序列"]]>",如果是属性的一部分,则是引号字符"或撇号字符'。

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

  • Method Details

    • splitText

      Text splitText(int offset) throws DOMException
      在指定的offset处将此节点分成两个节点,将两个节点作为兄弟节点保留在树中。分割后,此节点将包含直到offset点的所有内容。将返回一个新节点,该节点具有相同类型,其中包含offset点后的所有内容。如果原始节点有父节点,则新节点将插入为原始节点的下一个兄弟节点。当offset等于此节点的长度时,新节点将不包含数据。
      参数:
      offset - 从0开始的16位单位偏移量。
      返回:
      与此节点相同类型的新节点。
      抛出:
      DOMException - INDEX_SIZE_ERR: 如果指定的偏移量为负数或大于data中的16位单位数,则引发。
      NO_MODIFICATION_ALLOWED_ERR: 如果此节点是只读的,则引发。
    • isElementContentWhitespace

      boolean isElementContentWhitespace()
      返回此文本节点是否包含元素内容空白,通常被滥用地称为“可忽略空白”。在加载文档期间或使用Document.normalizeDocument()进行验证时,确定文本节点是否包含元素内容中的空白。
      自:
      1.5, DOM Level 3
    • getWholeText

      String getWholeText()
      返回与此节点逻辑相邻的所有Text节点的文本,按文档顺序连接在一起。
      例如,在下面的示例中,包含“bar”的Text节点上的wholeText返回“barfoo”,而包含“foo”的Text节点上返回“barfoo”。
                           +-----+
                           | <p> |
                           +-----+
                             /\
                            /  \
                     /-----\    +-------+
                     | bar |    | &ent; |
                     \-----/    +-------+
                                    |
                                    |
                                 /-----\
                                 | foo |
                                 \-----/
       
      图:barTextNode.wholeText值为“barfoo”
      自:
      1.5, DOM Level 3
    • replaceWholeText

      Text replaceWholeText(String content) throws DOMException
      用指定的文本替换当前节点和所有逻辑相邻的文本节点的文本。所有逻辑相邻的文本节点都将被移除,包括当前节点,除非当前节点是替换文本的接收者。

      此方法返回接收替换文本的节点。返回的节点是:

      • null,当替换文本为空字符串时;
      • 当前节点,除非当前节点是只读的;
      • 与当前节点相同类型(TextCDATASection)的新Text节点,插入到替换位置。

      例如,在上面的示例中,对包含“bar”的Text节点调用replaceWholeText,参数为“yo”,将导致以下结果:

                           +-----+
                           | <p> |
                           +-----+
                              |
                              |
                           /-----\
                           | yo  |
                           \-----/
       
      图:barTextNode.replaceWholeText("yo")将barTextNode的文本内容修改为“yo”

      如果要删除的节点是EntityReference的只读后代,则必须删除EntityReference而不是只读节点。如果要删除的任何EntityReference具有不是EntityReferenceTextCDATASection节点的后代,则在执行任何文档修改之前,replaceWholeText方法必须失败,引发代码为NO_MODIFICATION_ALLOWED_ERRDOMException

      例如,在下面的示例中,对包含“bar”的Text节点调用replaceWholeText将失败,因为EntityReference节点“ent”包含无法移除的Element节点。

      参数:
      content - 替换Text节点的内容。
      返回:
      使用指定内容创建的Text节点。
      抛出:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: 如果要替换的Text节点之一是只读的。
      自:
      1.5, DOM Level 3