http://scnujie.iteye.com/blog/232745
另外一个关键点就在于补齐截取出来的标签,而在这之前你可能需要面对里面的一些不常用甚至没见过的标签,所以你就需要扩展标签,而这时一个叫htmlparser的开源包
则可以帮得上忙了,它里面定义了一些常用的标签你可以在读取出来后它会帮你自动补齐,但是面对一些它里面没有的标签要怎么办呢,这时你可以自己再扩展出一些属于你自
已的标签,只要继承里面的一个叫CompositeTag的容器类,然后再模仿它已经定义好的标签进行扩展,当然写好了之后不要忘了要进行标签的注册,要不然它不能识别到这些自
定义的标签,不能识别到则不会自动帮你补齐。
下面是先定义一个标签(当然,这是一个比较简单的标签):
顺便赋上一篇关于自定义标签的文章:http://blog.youkuaiyun.com/joliny/archive/2008/02/27/2124678.aspx 可以参考.
则可以帮得上忙了,它里面定义了一些常用的标签你可以在读取出来后它会帮你自动补齐,但是面对一些它里面没有的标签要怎么办呢,这时你可以自己再扩展出一些属于你自
已的标签,只要继承里面的一个叫CompositeTag的容器类,然后再模仿它已经定义好的标签进行扩展,当然写好了之后不要忘了要进行标签的注册,要不然它不能识别到这些自
定义的标签,不能识别到则不会自动帮你补齐。
下面是先定义一个标签(当然,这是一个比较简单的标签):
顺便赋上一篇关于自定义标签的文章:http://blog.youkuaiyun.com/joliny/archive/2008/02/27/2124678.aspx 可以参考.
- publicclassWbrTagextendsCompositeTag{
- privatestaticfinalString[]mIds={"WBR"};
- privatestaticfinalString[]mEndTagEnders={"head"};
- publicString[]getIds(){
- return(mIds);
- }
- publicString[]getEndTagEnders(){
- return(mEndTagEnders);
- }
- publicString[]getEnders(){
- returnsuper.getEnders();
- }
- }
然后再进行标签的注册,这里当然可以注册多个自定义的标签:
- publicstaticvoidregisterTags(Parserparser)
- {
- //注册自定义的新结点解析器,这是必要的...
- PrototypicalNodeFactoryfactory=newPrototypicalNodeFactory();
- factory.registerTag(newWbrTag());
- parser.setNodeFactory(factory);
- }
然后再进行补齐:
- 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版本,它的不同版本可能有所不同,特此声明.
本文介绍如何使用HTMLParser库扩展自定义HTML标签,并通过示例代码展示了如何定义及注册新标签,最后实现标签的自动补齐。

1137

被折叠的 条评论
为什么被折叠?



