您的位置:首页 > Web前端 > HTML

html截取摘要并补齐标签(htmlparser)二

2008-10-30 01:41 267 查看
http://scnujie.javaeye.com/blog/232745另外一个关键点就在于补齐截取出来的标签,而在这之前你可能需要面对里面的一些不常用甚至没见过的标签,所以你就需要扩展标签,而这时一个叫htmlparser的开源包则可以帮得上忙了,它里面定义了一些常用的标签你可以在读取出来后它会帮你自动补齐,但是面对一些它里面没有的标签要怎么办呢,这时你可以自己再扩展出一些属于你自已的标签,只要继承里面的一个叫CompositeTag的容器类,然后再模仿它已经定义好的标签进行扩展,当然写好了之后不要忘了要进行标签的注册,要不然它不能识别到这些自定义的标签,不能识别到则不会自动帮你补齐。  下面是先定义一个标签(当然,这是一个比较简单的标签):   顺便赋上一篇关于自定义标签的文章:http://blog.csdn.net/joliny/archive/2008/02/27/2124678.aspx可以参考. Java代码publicclassWbrTagextendsCompositeTag{privatestaticfinalString[]mIds={"WBR"};privatestaticfinalString[]mEndTagEnders={"head"};publicString[]getIds(){return(mIds);}publicString[]getEndTagEnders(){return(mEndTagEnders);}publicString[]getEnders(){returnsuper.getEnders();}}
   然后再进行标签的注册,这里当然可以注册多个自定义的标签:Java代码publicstaticvoidregisterTags(Parserparser){//注册自定义的新结点解析器,这是必要的...PrototypicalNodeFactoryfactory=newPrototypicalNodeFactory();factory.registerTag(newWbrTag());parser.setNodeFactory(factory);}  然后再进行补齐:Java代码publicstaticStringsubcontent(Filefile,intlen){try{Stringhtml=readWithTag(file,len);Parserparser=Parser.createParser(newString(html.getBytes(),"8859_1"),"");registerTags(parser);NodeListnodelist=parser.extractAllNodesThatMatch(newNodeFilter(){publicbooleanaccept(Nodenode){if(nodeinstanceofCompositeTag)returntrue;returnfalse;}});Stringstr="";Stringtmp="";for(inti=0;i<nodelist.size();i++){CompositeTagtestTag=(CompositeTag)nodelist.elementAt(i);if(testTag.getParent()==null){   //记住这里只需循环第一层就能帮你补齐的了tmp=newString(testTag.toHtml().getBytes("8859_1"));str+=tmp+"/n";    }}returnstr;}catch(Exceptione){return"";}}
还有要补充一下的就是我用的htmlparser的1.5版本,它的不同版本可能有所不同,特此声明.
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: