Most visited

Recently visited

Added in API level 8

LSParserFilter

public interface LSParserFilter

org.w3c.dom.ls.LSParserFilter


LSParserFilter为应用程序提供了在解析时构建它们的过程中检查节点的功能。 在检查每个节点时,它可能会被修改或删除,或者整个解析可能会提前终止。

当解析器调用任何过滤器方法时,所有者Document和DOMImplementation对象存在并且可以访问。 文档元素永远不会传递给LSParserFilter方法,即无法过滤出文档元素。 DocumentDocumentTypeNotationEntity ,和Attr节点不会传递至acceptNode在过滤器上的方法。 如果参数“ entities ”设置为false ,则EntityReference节点的子节点将传递给过滤器。 请注意,如参数“ entities ”所述,未扩展的实体参考节点永远不会被丢弃,并始终传递给过滤器。

解析文档时进行的所有有效性检查都会在源文档上出现在输入流中,而不是在建立在内存中的DOM文档上。 使用过滤器时,内存中的文档可能是流中文档的子集,并且其有效性可能会受到过滤的影响。

元素传递给过滤器方法时,所有默认属性都必须存在于元素上。 所有其他默认内容必须传递给过滤器方法。

DOM应用程序不得在过滤器中引发异常。 从过滤器中抛出异常的效果是依赖于DOM实现的。

另请参阅 Document Object Model (DOM) Level 3 Load and Save Specification

Summary

Constants

short FILTER_ACCEPT

接受节点。

short FILTER_INTERRUPT

中断文档的正常处理。

short FILTER_REJECT

拒绝节点及其子节点。

short FILTER_SKIP

跳过这个单一节点。

Public methods

abstract short acceptNode(Node nodeArg)

解析器在每个节点解析完成时将调用此方法。

abstract int getWhatToShow()

告诉 LSParser向方法 LSParserFilter.acceptNode显示哪些类型的节点。

abstract short startElement(Element elementArg)

解析器将在每个 Element开始标记被扫描后,但在处理 Element的其余部分之前调用此方法。

Constants

FILTER_ACCEPT

Added in API level 8
short FILTER_ACCEPT

接受节点。

常数值:1(0x00000001)

FILTER_INTERRUPT

Added in API level 8
short FILTER_INTERRUPT

中断文档的正常处理。

常量值:4(0x00000004)

FILTER_REJECT

Added in API level 8
short FILTER_REJECT

拒绝节点及其子节点。

常量值:2(0x00000002)

FILTER_SKIP

Added in API level 8
short FILTER_SKIP

跳过这个单一节点。 该节点的孩子仍将被考虑。

常量值:3(0x00000003)

Public methods

acceptNode

Added in API level 8
short acceptNode (Node nodeArg)

解析器在每个节点解析完成时将调用此方法。 节点及其所有后代将存在并且完整。 父节点也会存在,尽管它可能是不完整的,也就是说它可能还有额外的子节点尚未被解析。 属性节点永远不会传递给这个函数。
从这种方法中,可以自由修改新节点 - 可以添加或删除子节点,修改文本节点等。未定义该节点之外的文档其余部分的状态,以及任何尝试导航到,或者修改文档的任何其他部分都是未定义的。
为了验证解析器,在对过滤器进行任何修改之前,都会在原始文档上进行检查。 对过滤器所做的任何文档修改均不进行有效性检查。
如果这个新节点被拒绝,解析器可能会重用新节点及其任何后代。

Parameters
nodeArg Node: The newly constructed element. At the time this method is called, the element is complete - it has all of its children (and their children, recursively) and attributes, and is attached as a child to its parent.
Returns
short
  • FILTER_ACCEPT if this Node should be included in the DOM document being built.
  • FILTER_REJECT if the Node and all of its children should be rejected.
  • FILTER_SKIP if the Node should be skipped and the Node should be replaced by all the children of the Node.
  • FILTER_INTERRUPT if the filter wants to stop the processing of the document. Interrupting the processing of the document does no longer guarantee that the resulting DOM tree is XML well-formed. The Node is accepted and will be the last completely parsed node.

getWhatToShow

Added in API level 8
int getWhatToShow ()

告诉LSParser方法LSParserFilter.acceptNode显示哪些类型的节点。 如果一个节点没有使用该属性显示给过滤器,它将自动包含在正在构建的DOM文档中。 有关NodeFilter的定义,请参见NodeFilter 常量SHOW_ATTRIBUTESHOW_DOCUMENTSHOW_DOCUMENT_TYPESHOW_NOTATIONSHOW_ENTITY ,并SHOW_DOCUMENT_FRAGMENT是没有意义的位置。 那些节点永远不会传递给LSParserFilter.acceptNode
这里使用的常量在[ DOM Level 2 Traversal and Range ]中定义。

Returns
int

startElement

Added in API level 8
short startElement (Element elementArg)

解析器将在每个Element开始标记被扫描后,但在处理Element的其余部分之前调用此方法。 其目的是允许包括任何儿童在内的元素被有效地跳过。 请注意,只有元素节点被传递给startElement函数。
传递给startElement进行过滤的元素节点将包含所有元素的属性,但不包括子节点。 元素可能还没有在正在构建的文档中(它可能没有父节点)。
startElement过滤器函数可以访问或更改元素的属性。 更改名称空间声明不会影响解析器对名称空间的解析。
为了提高效率,如果节点被接受,传递给过滤器的元素节点可能与实际放置在树中的元素节点不同。 并且在读入和过滤文档的过程中可以重用实际节点(节点对象标识)。

Parameters
elementArg Element: The newly encountered element. At the time this method is called, the element is incomplete - it will have its attributes, but no children.
Returns
short
  • FILTER_ACCEPT if the Element should be included in the DOM document being built.
  • FILTER_REJECT if the Element and all of its children should be rejected.
  • FILTER_SKIP if the Element should be skipped. All of its children are inserted in place of the skipped Element node.
  • FILTER_INTERRUPT if the filter wants to stop the processing of the document. Interrupting the processing of the document does no longer guarantee that the resulting DOM tree is XML well-formed. The Element is rejected.
Returning any other values will result in unspecified behavior.

Hooray!