-
public interface LSParserFilterLSParserFilters为应用程序提供了在解析时构建节点时检查节点的能力。 在检查每个节点时,可以修改或删除它,或者可以提前终止整个解析。在解析器调用任何过滤器方法时,所有者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 shortFILTER_ACCEPT接受节点。static shortFILTER_INTERRUPT中断文件的正常处理。static shortFILTER_REJECT拒绝节点及其子节点。static shortFILTER_SKIP跳过此单个节点。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 shortacceptNode(Node nodeArg)解析器在完成每个节点的解析时将调用此方法。intgetWhatToShow()告诉LSParser向方法LSParserFilter.acceptNode显示哪些类型的节点。shortstartElement(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 ]中定义。
-
-