-
public interface LSParserFilter
LSParserFilter
s为应用程序提供了在解析时构建节点时检查节点的能力。 在检查每个节点时,可以修改或删除它,或者可以提前终止整个解析。在解析器调用任何过滤器方法时,所有者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 。
- 从以下版本开始:
- 1.5
-
-
字段汇总
字段 变量和类型 字段 描述 static short
FILTER_ACCEPT
接受节点。static short
FILTER_INTERRUPT
中断文件的正常处理。static short
FILTER_REJECT
拒绝节点及其子节点。static short
FILTER_SKIP
跳过此单个节点。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 short
acceptNode(Node nodeArg)
解析器在完成每个节点的解析时将调用此方法。int
getWhatToShow()
告诉LSParser
向方法LSParserFilter.acceptNode
显示哪些类型的节点。short
startElement(Element elementArg)
在扫描每个Element
开始标记之后,但在处理Element
的其余部分之前,解析器将调用此方法。
-
-
-
方法详细信息
-
startElement
short startElement(Element elementArg)
在扫描每个Element
开始标记之后,但在处理完Element
的剩余部分之前,解析器将调用此方法。 目的是允许有效地跳过元素,包括任何子元素。 请注意,只有元素节点才会传递给startElement
函数。
传递给startElement
进行过滤的元素节点将包含所有Element的属性,但不包括子节点。 Element可能尚未在正在构建的文档中就位(它可能没有父节点。)
startElement
过滤器功能可以访问或更改元素的属性。 更改命名空间声明对解析器的命名空间解析没有影响。
为了提高效率,传递给过滤器的Element节点可能与接受节点时实际放置在树中的节点不同。 并且在读入和过滤文档的过程中可以重用实际节点(节点对象标识)。- 参数
-
elementArg
- 新遇到的元素。 在调用此方法时,元素是不完整的 - 它将具有其属性,但没有子元素。 - 结果
-
-
FILTER_ACCEPT
如果Element
应该包含在正在构建的DOM文档中。 -
FILTER_REJECT
如果Element
及其所有子女都应该被拒绝。 -
FILTER_SKIP
是否应跳过Element
。 插入所有子节点以代替跳过的Element
节点。 -
FILTER_INTERRUPT
如果过滤器想要停止处理文档。 中断文档的处理不再保证生成的DOM树是XML格式良好的。Element
被拒绝。
-
-
acceptNode
short acceptNode(Node nodeArg)
解析器在完成每个节点的解析时将调用此方法。 节点及其所有后代将存在并完整。 父节点也将存在,尽管它可能是不完整的,即它可能还有其他尚未解析的子节点。 属性节点永远不会传递给此函数。
在此方法中,可以自由修改新节点 - 可以添加或删除子节点,修改文本节点等。此节点外部文档的其余部分的状态未定义,以及任何尝试导航到的节点的影响,或修改文档的任何其他部分是未定义的。
对于验证解析器,在对过滤器进行任何修改之前,将对原始文档进行检查。 对过滤器所做的任何文档修改都没有进行有效性检查。
如果拒绝此新节点,则解析器可能会重用新节点及其任何后代。- 参数
-
nodeArg
- 新构造的元素。 在调用此方法时,元素已完成 - 它具有所有子项(及其子项,递归)和属性,并作为子项附加到其父项。 - 结果
-
-
FILTER_ACCEPT
如果此Node
应包含在正在构建的DOM文档中。 -
FILTER_REJECT
如果Node
及其所有子女都应该被拒绝。 -
FILTER_SKIP
如果Node
应该跳过,Node
应该由所有的孩子都被替换Node
。 -
FILTER_INTERRUPT
如果过滤器想要停止处理文档。 中断文档的处理不再保证生成的DOM树是XML格式良好的。Node
被接受,将是最后一个完全解析的节点。
-
-
getWhatToShow
int getWhatToShow()
告诉LSParser
向方法LSParserFilter.acceptNode
显示哪些类型的节点。 如果使用此属性未向筛选器显示节点,则它将自动包含在正在构建的DOM文档中。 有关NodeFilter
的定义,请参见NodeFilter
。 常量SHOW_ATTRIBUTE
,SHOW_DOCUMENT
,SHOW_DOCUMENT_TYPE
,SHOW_NOTATION
,SHOW_ENTITY
和SHOW_DOCUMENT_FRAGMENT
是没有意义在这里。 这些节点永远不会传递给LSParserFilter.acceptNode
。
这里使用的常数在[ DOM Level 2 Traversal and Range ]中定义。
-
-