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

インタフェースLSParserFilter


public interface LSParserFilter
LSParserFilterを使用すると、構文解析中のノード構築時に、アプリケーションでノードを検証できます。 各ノードが検証されるので、ノードを変更または削除したり、解析全体を早期に終了することもできます。

パーサーがフィルタ・メソッドを呼び出すとき、所有者DocumentオブジェクトとDOMImplementationオブジェクトは存在し、アクセス可能です。 文書要素がLSParserFilterメソッドに渡されることはありません。つまり、文書要素をフィルタで排除できません。 DocumentDocumentTypeNotationEntityおよびAttrノードがフィルタのacceptNodeメソッドに渡されることはありません。 EntityReferenceノードの子ノードは、パラメータ "entities"がfalseに設定されている場合にフィルタに渡されます。 パラメータ "entities"で説明されているように、拡張されていないエンティティ参照ノードは決して破棄されず、常にフィルタに渡されることに注意してください。

文書解析中に行われるすべての有効性チェックは、DOM文書がメモリーで構築されるときにDOM文書で行われるのではなく、ソース文書が入力ストリームに現れたときにソース文書で行われます。 フィルタでは、メモリーの文書はストリーム上の文書のサブセットになり、また、文書の有効性はフィルタ処理により影響を受けている場合があります。

要素がフィルタ・メソッドに渡されるときは、すべてのデフォルト属性が要素に存在している必要があります。 ほかのすべてのデフォルト・コンテンツは、フィルタ・メソッドに渡される必要があります。

DOMアプリケーションがフィルタの例外をスローすることはありません。 フィルタから例外がスローされる場合、その影響はDOM実装によって異なります。

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

導入されたバージョン:
1.5
  • フィールドのサマリー

    フィールド
    修飾子と型 フィールド 説明
    static short FILTER_ACCEPT
    ノードを受け入れます。
    static short FILTER_INTERRUPT
    文書の通常の処理に割り込みます。
    static short FILTER_REJECT
    ノードとノードの子を拒否します。
    static short FILTER_SKIP
    指定した単一のノードをスキップします。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    short acceptNode​(Node nodeArg)
    各ノードの解析が完了すると、パーサーはこのメソッドを呼び出します。
    int getWhatToShow()
    LSParserFilter.acceptNodeメソッドに対してどのタイプのノードを示すかをLSParserに通知します。
    short startElement​(Element elementArg)
    Elementの開始タグが走査されたあと、ただしElementのそれ以降が処理される前に、パーサーはこのメソッドを呼び出します。
  • フィールド詳細

    • FILTER_ACCEPT

      static final short FILTER_ACCEPT
      ノードを受け入れます。
      関連項目:
      定数フィールド値
    • FILTER_REJECT

      static final short FILTER_REJECT
      ノードとノードの子を拒否します。
      関連項目:
      定数フィールド値
    • FILTER_SKIP

      static final short FILTER_SKIP
      指定した単一のノードをスキップします。 指定したノードの子は引き続き考慮されます。
      関連項目:
      定数フィールド値
    • FILTER_INTERRUPT

      static final short FILTER_INTERRUPT
      文書の通常の処理に割り込みます。
      関連項目:
      定数フィールド値
  • メソッドの詳細

    • startElement

      short startElement​(Element elementArg)
      Elementの開始タグが走査されたあと、ただしElementのそれ以降が処理される前に、パーサーはこのメソッドを呼び出します。 これは、子を含めて要素を効率的にスキップできるようにするためです。 要素ノードだけがstartElement関数に渡されます。
      フィルタ処理のためにstartElementに渡される要素ノードにはElementのすべての属性が含まれますが、子ノードは含まれません。
      Elementは、構築中の文書にない可能性があります(親ノードを持っていない可能性あり)。
      startElementフィルタ関数はElementの属性にアクセスしたり、変更したりできます。
      Namespace宣言を変更しても、パーサーによる名前空間解決に影響はありません。
      効率のために、フィルタに渡されるElementノードは、そのノードが受け入れられた場合に実際にツリー内に配置されるノードと同じでない可能性があります。
      実際のノード(ノード・オブジェクト識別)は、文書の読取りとフィルタ処理の間に再使用できます。
      パラメータ:
      elementArg - 新しく検出された要素。 メソッドが呼び出されたとき、要素は不完全であり、属性を持つが、子を持たない。
      戻り値:
      • Elementを構築されるDOM文書に含めるようにする場合はFILTER_ACCEPT
      • Elementとそのすべての子を拒否する必要がある場合はFILTER_REJECT
      • Elementをスキップするようにする場合はFILTER_SKIP そのすべての子が、スキップされたElementノードの場所に挿入される。
      • フィルタによる文書の処理を停止する場合はFILTER_INTERRUPT 文書の処理が中断された場合、生成されるDOMツリーが正しいXML形式になることは保証されない。 Elementは拒否される。
      ほかの値が返されると、指定されていない動作を生じる。
    • acceptNode

      short acceptNode​(Node nodeArg)
      各ノードの解析が完了すると、パーサーはこのメソッドを呼び出します。 ノードとノードのすべての下位ノードが現れ、完備されます。 親ノードも存在しますが、解析されていない追加の子を持つ場合があるため、不完全である可能性があります。 属性ノードは、この関数に渡されることはありません。
      このメソッド内から、新しいノードを自由に変更できます(子の追加または削除、テキスト・ノードの変更など)。このノードの外部にある残りの文書の状態は定義されておらず、文書のその他のいずれかの部分に移動したり、それらの部分を変更したりしようとするどのような試みの影響も未定義です。

      妥当性を検証するパーサーの場合は、フィルタによる変更の前に、元の文書に対してチェックが行われます。
      フィルタによって行われた文書変更の有効性は一切チェックされません。
      この新しいノードが拒否された場合、パーサーは、新しいノードとそのいずれかの下位ノードを再利用する可能性があります。
      パラメータ:
      nodeArg - 新しく構築された要素。 メソッドが呼び出されたとき、要素は完全であり、要素のすべての子(および再帰的にそれらの子)と属性を所有し、親に対し子として追加される。
      戻り値:
      • このNodeを構築されるDOM文書に含めるようにする場合はFILTER_ACCEPT
      • Nodeとそのすべての子を拒否する必要がある場合はFILTER_REJECT
      • Nodeをスキップするようにし、NodeNodeのすべての子に置き換えるようにする場合はFILTER_SKIP
      • フィルタによる文書の処理を停止する場合はFILTER_INTERRUPT 文書の処理が中断された場合、生成されるDOMツリーが正しいXML形式になることは保証されない。 Nodeは受け入れられ、最後の完全に解析されたノードになる。
    • getWhatToShow

      int getWhatToShow()
      LSParserFilter.acceptNodeメソッドに対してどのタイプのノードを示すかをLSParserに通知します。 ノードは、この属性を使用しているフィルタに示されない場合は、構築されているDOM文書に自動的に含められます。 定数の定義についてはNodeFilterを参照してください。 定数SHOW_ATTRIBUTESHOW_DOCUMENTSHOW_DOCUMENT_TYPESHOW_NOTATIONSHOW_ENTITY、およびSHOW_DOCUMENT_FRAGMENTは、ここでは意味がありません。 これらのノードがLSParserFilter.acceptNodeに渡されることはありません。
      ここで使用される定数は、[DOM Level 2 Traversal and Range]で定義されています。