1,Node有三种实现,分别是RemarkNode,用于保存注释。TextNode也很简单,就是用户可见的文字信息。TagNode是最复杂的,包含了HTML语言中的所有标

签,而且可以扩展放入。TagNode包含两类,一类是简单的Tag,实际就是不能包含其他Tag的标签,只能做叶子节点。另一类是CompositeTag,就是可以包含其他Tag,是分支节点。

 

2,Node中包含的方法有几类:

对于树型结构进行遍历的函数,这些函数最容易理解:

Node getParent ():取得父节点  NodeList getChildren ():取得子节点的列表  Node getFirstChild ():取得第一个子节点

Node getLastChild ():取得最后一个子节点  Node getPreviousSibling ():取得前一个兄弟  Node getNextSibling ():取得下一个兄弟节点

取得Node内容的函数:

String getText ():取得文本  String toPlainTextString():取得纯文本信息。  String toHtml () :取得HTML信息(原始HTML)

String toHtml (boolean verbatim):取得HTML信息(原始HTML)  String toString ():取得字符串信息(原始HTML)

Page getPage ():取得这个Node对应的Page对象  int getStartPosition ():取得这个Node在HTML页面中的起始位置

int getEndPosition ():取得这个Node在HTML页面中的结束位置

用于Filter过滤的函数:

void collectInto (NodeList list, NodeFilter filter):基于filter的条件对于这个节点进行过滤,符合条件的节点放到list中。

用于Visitor遍历的函数:

void accept (NodeVisitor visitor):对这个Node应用visitor

用于修改内容的函数,这类用得比较少:

void setPage (Page page):设置这个Node对应的Page对象  void setText (String text):设置文本  

void setChildren (NodeList children):设置子节点列表

其他函数:

void doSemanticAction ():执行这个Node对应的操作(只有少数Tag有对应的操作)  Object clone ():接口Clone的抽象函数。

参考网址:http://allenj2ee.iteye.com/blog/222455

 

3,Filter类

Filter就是对于结果进行过滤,取得需要的内容。HTMLParser在org.htmlparser.filters包之内一共定义了16个不同的Filter,也可以分为几类。

判断类Filter:

TagNameFilter  HasAttributeFilter  HasChildFilter  HasParentFilter  HasSiblingFilter  IsEqualFilter

逻辑运算Filter:

AndFilter  NotFilter  OrFilter  XorFilter

其他Filter:

NodeClass  FilterStringFilter  LinkStringFilter  LinkRegexFilter  RegexFilter  CssSelectorNodeFilter

所有的Filter类都实现了org.htmlparser.NodeFilter接口。这个接口只有一个主要函数:

boolean accept (Node node)

参考网址:http://blog.csdn.net/yanjun_xiaoli/article/details/4291865

posted on 2012-07-04 10:10  xnfriday  阅读(192)  评论(0编辑  收藏  举报