首页 > IT职业 > IT职场 > DOM的TreeWalker对象简介
TreeWalker对象是一个功能强大的DOM2对象,可让您轻松地从文档中的节点中过滤并创建自定义集合。 好吧,这听起来很怪异,但是对于需要解析文档树的怪异工作,熟悉这个对象并不会有任何伤害。 在编写脚本时,您可能需要检索具有特定CSS类名的网页中的所有元素,或者需要检索具有特定属性值的元素的XML文档。 TreeWalker对象可以轻松完成这些任务。 在本教程中,我将介绍DOM2的TreeWalker对象,它是 Firefox / Opera8 +中 支持的DOM2方法, 但不是IE6或IE7(截至beta3)。
在继续之前,请注意TreeWalker对象中有一个名为NodeIterator的表兄弟,我将在以后的教程中介绍。
TreeWalker对象可能会变得神秘而且有些复杂,但它实际上只是通过一个方法document.createTreeWalker()来实现。 该方法及其接受的4个参数简化了可能需要多次传统编码的过程,例如,过滤文档中具有特定元素类型并携带特定属性的所有节点。 但在我们完成所有这些之前,这里是document.createTreeWalker()的基本描述:
document.createTreeWalker(root,nodesToShow,filter,entityExpandBol)
是时候分解4个参数了:
root: 使用开始搜索文档树的根节点。
nodesToShow: TreeWalker应访问的节点类型。
filter(或null): 引用自定义函数(NodeFilter对象)来过滤返回的节点。 输入null表示无。
entityExpandBol: 布尔参数,指定是否应扩展实体引用。
对于3),有效常量值为:
| NodeFilter.SHOW_ALL |
NodeFilter.SHOW_
ENTITY_REFERENCE |
NodeFilter.SHOW_
DOCUMENT_TYPE |
| NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_ENTITY | NodeFilter.SHOW_FRAGMENT |
| NodeFilter.SHOW_ATTRIBUTE |
NodeFilter.SHOW_
PROCESSING_INSTRUCTION |
NodeFilter.SHOW_NOTATION |
| NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT |
|
|
NodeFilter.SHOW_
CDATA_SECTION |
NodeFilter.SHOW_DOCUMENT |
|
虽然有15个不同的NodeFilter常量可以限制TreeWalker返回的节点类型,但您可能只会在大多数情况下使用其中的一些节点。 例如,NodeFilter.SHOW_ELEMENT返回所有元素节点。
好吧,所以你很想看到document.createTreeWalker()的演示,这是一个非常基本的开始:
在此示例中,我指定TreeWalker的根节点开始遍历ID为“contentarea”的容器。 对象的第二个参数指定TreeWalker应该只对容器内的元素节点(与文本节点,注释节点等)进行爬网。 第三个参数设置为null,表示不应该进行额外的过滤(尚未!)。 第4个参数涉及是否应扩展实体引用,并将其设置为false。 有了所有参数,“walker”现在引用DIV中的所有元素(P,SPAN和B)以及DIV本身。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69933200/viewspace-2652227/ ,如需转载,请注明出处,否则将追究法律责任。