天天看點

讀代碼之htmlParser

在以前使用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()方法的調用,以後再看看書吧。。