モジュール java.xml
パッケージ org.w3c.dom

インタフェースText

  • すべてのスーパー・インタフェース:
    CharacterData, Node
    既知のすべてのサブインタフェース:
    CDATASection, Text

    public interface Text
    extends CharacterData
    TextインタフェースはCharacterDataを継承し、ElementまたはAttrのテキスト形式の内容(XMLでは文字データという)を表します。 要素のコンテンツ内にマークアップが存在しない場合、テキストはTextインタフェースを実装する単一のオブジェクト(要素の唯一の子オブジェクト)に格納されます。 マークアップが存在する場合、テキストは情報項目(要素、コメントなど)や、その要素の子要素のリストを形成するTextノードに解析されます。

    DOMによって文書がはじめて利用可能な状態になった時点では、Textノードはテキスト・ブロックごとに1個ずつしか存在しません。 ユーザーはマークアップを一切使用しないで所定の要素のコンテンツを表す隣接Textノードを作成できますが、XMLやHTMLではこれらのノードの区切りを表現できないということ、つまり、通常、作成したノードはDOM編集セッションの終了とともに失われるということを認識しておく必要があります。 Node.normalize()メソッドは、こうした隣接Textオブジェクトを各テキスト・ブロック内の単一のノードにマージします。

    Textノードの内容に対する字句のチェックは実行されないため、一部の文字は、文書内の位置に応じて、直列化中に文字参照を使用してエスケープする必要があります。たとえば、テキスト・コンテンツが要素または属性の一部である場合の文字「<&」、要素の一部である場合の文字シーケンス「]]>」、属性の一部である場合の引用符文字「"」またはアポストロフィ文字「'」などがあります。

    Document Object Model (DOM) Level 3 Core Specification」も参照してください。

    • メソッドの詳細

      • splitText

        Text splitText​(int offset)
                throws DOMException
        このノードを、指定されたoffset位置で2つのノードに分割し、それらを兄弟ノードとしてツリー内に保存します。 分割されたあと、このノードにはoffset位置までのすべてのコンテンツが含まれます。 offset位置とそれよりあとにあるすべてのコンテンツを含む、同じ型の新しいノードが返されます。 元のノードが親ノードを持っていた場合、元のノードの隣に兄弟ノードとして新しいノードが挿入されます。 offsetがこのノードの長さに等しい場合、新しいノードはデータを持ちません。
        パラメータ:
        offset - 分割する位置を示す(0から始まる) 16ビット単位のオフセット。
        戻り値:
        このノードと同じ型の新しいノード。
        例外:
        DOMException - INDEX_SIZE_ERR: 指定されたoffsetが負であるか、またはdata内の16ビット単位の数より大きい場合に発生します。
        NO_MODIFICATION_ALLOWED_ERR: このノードが読取り専用の場合に発生します。
      • isElementContentWhitespace

        boolean isElementContentWhitespace()
        このテキスト・ノードが要素コンテンツ空白文字 (多くの場合、「無視できる空白文字」と呼ばれる)を含むかどうかを返します。 文書をロード中に、あるいはDocument.normalizeDocument()を使用中に検証が行われた場合に、テキスト・ノードは要素コンテンツに空白文字を含むかどうかを判定されます。
        導入されたバージョン:
        1.5、DOMレベル3
      • getWholeText

        String getWholeText()
        このノードに論理的に隣接するテキスト・ノードであるTextノードのすべてのテキストを文書の順に連結して返します。
        たとえば、次の例では、wholeTextは「bar」を含むTextノード上で「barfoo」を返すのに対して、「foo」を含むTextノード上では「barfoo」を返します。
                             +-----+
                             | <p> |
                             +-----+
                               /\
                              /  \
                       /-----\    +-------+
                       | bar |    | &ent; |
                       \-----/    +-------+
                                      |
                                      |
                                   /-----\
                                   | foo |
                                   \-----/
         
        図: barTextNode.wholeText値が「barfoo」
        導入されたバージョン:
        1.5、DOMレベル3
      • replaceWholeText

        Text replaceWholeText​(String content)
                       throws DOMException
        現在のノードと論理的に隣接するすべてのテキスト・ノードのテキストを、指定されたテキストに置き換えます。 置換テキストの受け側でないかぎり、現在のノードを含めて、論理的に隣接するすべてのテキスト・ノードは削除されます。

        このメソッドは、置換テキストを受け取ったノードを返します。 返されるノードは次のとおりです。

        • 置換テキストが空の文字列である場合はnull
        • 現在のノードが読取り専用である場合を除く、現在のノード
        • 置換位置に挿入された現在のノードと同じ型(TextまたはCDATASection)の新しいTextノード。

        たとえば、上の例で、「bar」を含むTextノード上で引数に「yo」を指定してreplaceWholeTextを呼び出すと、次のようになります。

                             +-----+
                             | <p> |
                             +-----+
                                |
                                |
                             /-----\
                             | yo  |
                             \-----/
         
        図: barTextNode.replaceWholeText("yo")がbarTextNodeのテキスト・コンテンツを「yo」で変更

        削除されるノードがEntityReferenceの読取り専用の子孫である場合は、読取り専用ノードの代わりにEntityReferenceが削除されます。 削除されるいずれかのEntityReferenceEntityReferenceText、またはCDATASectionノードではない子孫を持つ場合、replaceWholeTextメソッドは文書の何らかの変更を実行する前に失敗し、コードNO_MODIFICATION_ALLOWED_ERRDOMExceptionを発生させます。

        たとえば、次の例では、「bar」を含むTextノード上でreplaceWholeTextを呼び出すと、EntityReferenceノード「ent」に削除できないElementノードが含まれているために失敗します。

        パラメータ:
        content - 置き換えているTextノードのコンテンツ。
        戻り値:
        指定されたコンテンツで作成されたTextノード。
        例外:
        DOMException - NO_MODIFICATION_ALLOWED_ERR: 置換しているTextノードの中の1つが読取り専用の場合に発生します。
        導入されたバージョン:
        1.5、DOMレベル3