用org.htmlparser包解析html正文内容的实现

在开发内容管理系统时,因信息表的正文字段存储的是带html格式的内容,如果要统计正文的字数,需要首先过滤掉html标签。可使用org.htmlparser很方便地将正文字段的html标签过滤掉,得到只含文字内容的字符串。下面是使用htmlparser获取html正文的代码:

public static String getHtmlText(String htmlContent) throws Exception

{

if(htmlContent==null)htmlContent="";

//增加一个<br/>,经测试,如果正文为纯文本,org.htmlparser会把参数当作一个文件处理

StringBuffer sbf = new StringBuffer("");

sbf.append("<br />").append(htmlContent);

Parser parser = new Parser(sbf.toString());

TextExtractingVisitor visitor = new TextExtractingVisitor();

parser.visitAllNodesWith(visitor);

String sReturn = visitor.getExtractedText();

sReturn = sReturn.replace(" ", "");//去掉空格以便统计字数

return sReturn;

}

需要特别注意的是,上面的代码中将htmlContent正文增加了<br/>标签后再进行后续处理,为什么?这是因为,如果正文中不带html标签,org.htmlparser包会把传入参数作为一个文件或URL连接处理,经测试,如果传入的字符串不包含html标签,例如传入字符串为“你好”,则抛出文件IO异常,提示找不到文件“你好”,将传入字符串增加一个html标签后就不会出现问题。