public interface LSParserFilter
LSParserFilter
为应用程序提供了在解析时正在构造时检查节点的能力。
当每个节点被检查时,它可以被修改或去除,或者整个解析可以被提前终止。
在解析器调用任何过滤器方法时,所有者Document和DOMImplementation对象都存在并且可以访问。 文档元素从不传递到LSParserFilter
方法,即不可能过滤出文档元素。 Document
, DocumentType
, Notation
, Entity
和Attr
节点不会传递至acceptNode
在过滤器上的方法。 如果参数“ entities ”设置为false
,则EntityReference
节点的子节点将传递给过滤器。 请注意,如参数“ entities ”所述,未扩展的实体引用节点不会被丢弃,并且始终传递给过滤器。
分析文档时的所有有效性检查都会发生在源文档上,因为它在输入流中显示,而不是内置在内存中的DOM文档上。 使用过滤器,内存中的文档可能是流上文档的一个子集,其有效性可能受到过滤的影响。
当元素传递到过滤器方法时,所有默认属性必须存在于元素上。 所有其他默认内容必须传递给过滤器方法。
DOM应用程序不能在过滤器中引发异常。 从过滤器抛出异常的效果是依赖于DOM实现的。
另见Document Object Model (DOM) Level 3 Load and Save Specification 。
Modifier and Type | Field and Description |
---|---|
static short |
FILTER_ACCEPT
接受节点。
|
static short |
FILTER_INTERRUPT
中断文件的正常处理。
|
static short |
FILTER_REJECT
拒绝节点及其子节点。
|
static short |
FILTER_SKIP
跳过这个单个节点。
|
Modifier and Type | Method and Description |
---|---|
short |
acceptNode(Node nodeArg)
解析器在完成每个节点的解析时将调用此方法。
|
int |
getWhatToShow()
告诉
LSParser 方法
LSParserFilter.acceptNode 显示什么类型的节点。
|
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的属性,但不包括子节点。
元素可能尚未在正在构造的文档中就位(可能没有父节点)。
startElement
过滤器函数可以访问或更改元素的属性。
更改命名空间声明对解析器的命名空间解析没有影响。
elementArg
- 新遇到的元素。
在调用此方法时,元素不完整 - 它将具有其属性,但不包含子项。
FILTER_ACCEPT
如果Element
应该包含在正在构建的DOM文档中。 FILTER_REJECT
如果Element
及其所有的孩子都应该被拒绝。 FILTER_SKIP
如果Element
应该被跳过。 所有的孩子被插入代替跳过的Element
节点。 FILTER_INTERRUPT
如果过滤器想要停止文档的处理。 中断文档的处理不再保证生成的DOM树是XML格式正确的。 Element
被拒绝。 short acceptNode(Node nodeArg)
nodeArg
- 新构造的元素。
在调用此方法时,该元素是完整的 - 它具有所有子项(及其子代,递归)和属性,并作为子节点附加到其父项。
FILTER_ACCEPT
如果这Node
应该包含在正在构建的DOM文档中。 FILTER_REJECT
如果Node
及其所有的孩子都应该被拒绝。 FILTER_SKIP
如果Node
应该被跳过, Node
应该被Node
的所有子Node
。 FILTER_INTERRUPT
如果过滤器想要停止文档的处理。 中断文档的处理不再保证生成的DOM树是XML格式正确的。 Node
被接受,将是最后一个完全解析的节点。 int getWhatToShow()
LSParser
方法LSParserFilter.acceptNode
显示什么类型的节点。
如果节点没有显示给使用此属性的过滤器,则会自动将其包含在正在构建的DOM文档中。
有关NodeFilter
的定义,请参见NodeFilter。
常量SHOW_ATTRIBUTE
, SHOW_DOCUMENT
, SHOW_DOCUMENT_TYPE
, SHOW_NOTATION
, SHOW_ENTITY
和SHOW_DOCUMENT_FRAGMENT
是没有意义在这里。
那些节点永远不会传递给LSParserFilter.acceptNode
。