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 のそれ以降が処理される前に、パーサーはこのメソッドを呼び出します。 |
static final short FILTER_ACCEPT
static final short FILTER_REJECT
static final short FILTER_SKIP
static final short FILTER_INTERRUPT
short startElement(Element elementArg)
Element
の開始タグが走査されたあと、ただしElement
のそれ以降が処理される前に、パーサーはこのメソッドを呼び出します。これは、子を含めて要素を効率的にスキップできるようにするためです。要素ノードだけがstartElement
関数に渡されます。startElement
に渡される要素ノードにはElementのすべての属性が含まれますが、子ノードは含まれません。Elementは、構築中の文書にない可能性があります(親ノードを持っていない可能性あり)。startElement
フィルタ関数はElementの属性にアクセスしたり、変更したりできます。Namespace宣言を変更しても、パーサーによる名前空間解決に影響はありません。elementArg
- 新しく検出された要素。メソッドが呼び出されたとき、要素は不完全であり、属性を持つが、子を持たない。Element
を構築されるDOM文書に含めるようにする場合はFILTER_ACCEPT
。
Element
とそのすべての子を拒否する必要がある場合はFILTER_REJECT
。
Element
をスキップするようにする場合はFILTER_SKIP
。そのすべての子が、スキップされたElement
ノードの場所に挿入される。
FILTER_INTERRUPT
。文書の処理が中断された場合、生成されるDOMツリーが正しいXML形式になることは保証されない。Element
は拒否される。
short acceptNode(Node nodeArg)
nodeArg
- 新しく構築された要素。メソッドが呼び出されたとき、要素は完全であり、要素のすべての子(および再帰的にそれらの子)と属性を所有し、親に対し子として追加される。Node
を構築されるDOM文書に含めるようにする場合はFILTER_ACCEPT
。
Node
とそのすべての子を拒否する必要がある場合はFILTER_REJECT
。
Node
をスキップするようにし、Node
をNode
のすべての子に置き換えるようにする場合はFILTER_SKIP
。
FILTER_INTERRUPT
。文書の処理が中断された場合、生成されるDOMツリーが正しいXML形式になることは保証されない。Node
は受け入れられ、最後の完全に解析されたノードになる。
int getWhatToShow()
LSParserFilter.acceptNode
メソッドに対してどのタイプのノードを示すかをLSParser
に通知します。ノードは、この属性を使用しているフィルタに示されない場合は、構築されているDOM文書に自動的に含められます。定数の定義についてはNodeFilter
を参照してください。定数SHOW_ATTRIBUTE
、SHOW_DOCUMENT
、SHOW_DOCUMENT_TYPE
、SHOW_NOTATION
、SHOW_ENTITY
、およびSHOW_DOCUMENT_FRAGMENT
は、ここでは意味がありません。これらのノードがLSParserFilter.acceptNode
に渡されることはありません。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2018, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。