JavaTM Platform
Standard Ed. 6

org.w3c.dom.ls
インタフェース LSParserFilter


public interface LSParserFilter

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

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

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

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

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

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


フィールドの概要
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 - 新しく検出された要素。メソッドが呼び出されたとき、 要素は不完全であり、属性を持つが、 子を持たない
戻り値:
  • FILTER_ACCEPT 構中の DOM ドキュメントに Element が含まれる必要がある場合
  • FILTER_REJECT Element とそのすべての子を拒否する必要がある場合
  • FILTER_SKIP Element をスキップする必要がある場合。Element をスキップする必要がある場合。
  • FILTER_INTERRUPT フィルタによるドキュメントの処理を停止したい場合。フィルタ操作で文書の処理を 停止する場合。Element は拒否される
ほかの値が返されると、指定されていない動作を生じる

acceptNode

short acceptNode(Node nodeArg)
各ノードの解析が完了すると、パーサーはこのメソッドを呼び出します。ノードとノードのすべての下位ノードが現れ、完備されます。親ノードも存在しますが、解析されていない追加の子を持つ場合があるため、不完全である可能性があります。属性ノードは、この関数に渡されることはありません。
このメソッド内で、新しいノードを自由に変更できます (子の追加または削除、テキストノードの変更など)。 このノードの外部の残りの文書の状態は定義されていません。 文書の他の部分への移動または変更の影響は保証されません。
有効性を検査するパーサーの場合は、フィルタによる変更の前に、元の文書でチェックが行われます。フィルタによって行われた文書変更の有効性は一切チェックされません。
この新しいノードが拒否された場合、パーサーは新しいノードとその下位ノードを再使用する可能性があります。

パラメータ:
nodeArg - 新たに構築された要素。メソッドが呼び出されたとき、 要素は完全であり、要素のすべての子 (および再帰的にそれらの子) と属性を所有し、 親に対し子として追加される
戻り値:
  • FILTER_ACCEPT 構築中の DOM ドキュメントに、この Node を追加する必要がある場合
  • FILTER_REJECT Node とそのすべての子を拒否する場合
  • FILTER_SKIP Node をスキップする必要があり、NodeNode のすべての子に置き換える必要がある場合
  • FILTER_INTERRUPT フィルタによるドキュメントの処理を停止したい場合。フィルタ操作で文書の処理を 停止する場合。文書の処理を中断すると、 結果の DOM ツリーの XML 整形式は 保証されない。

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」で定義されています。


JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。