在以前使用HtmlParser时,并未考虑过遇到org.htmlparser.tags之外的Tag怎么处理。直到碰到这样的一个标签,如果不加处理,HtmlParser无法对其进行处理。查阅自定义标签之后才明白,控制HtmlParser解析网页结构的是,PrototypicalNodeFactory implements NodeFactory。每一种Tag都需要在NodeFactory中注册一下(registerTag())。默认注册org.htmlparser.tags中的所有Tag.如果有自定义的Tag,要在里面注册一下。自定义标签可以extends CompositeTag。子类必须实现String[] getIds()方法,注册时提供该类的实例。PrototypicalNodeFactory保存了一个Map<String, Node>.Key为tag的名称,就是getIds()方法返回的String[].Value为注册时提供的实例。在HtmlParser解析过程中,会调用实例的clone()方法构建一个Node。
这也是我第一次见到Java中clone方法的使用。具体clone()方法的调用,以后再看看书吧。。