日期:2014-05-20  浏览次数:20765 次

如何提取html中的文本?
RT,我想做一个将html文件转换为text文本的程序.
我希能实现:对一个html中的文本,我用程序转换得到的结果与用IE打开后用CTRL+C得到的基本一致。

我写了如下代码:
import   javax.swing.text.*;
import   javax.swing.text.html.*;
import   javax.swing.text.html.parser.*;
import   java.io.*;

public   class   ParserTest{
        public   static   void   main(String[]   args)throws   Throwable{
                Reader   r   =new   StringReader( " <html> <body> A&nbsp;&nbsp;B </body> </html> ");
                ParserCallback   pc   =new   ParserCallback(System.out);
                HTMLEditorKit.Parser   p   =new   ParserGetter().getParser();
                p.parse(r,pc,true);  
        }
}
class   ParserCallback   extends   HTMLEditorKit.ParserCallback{
        private   PrintStream   ps;
        public   ParserCallback(PrintStream   ps){
                this.ps   =ps;
        }
        public   void   handleText(char[]   text,int   position){
                ps.println(text);
        }
}
class   ParserGetter   extends   HTMLEditorKit{
        //purely   to   make   this   method   public
        public   HTMLEditorKit.Parser   getParser(){
                return   super.getParser();
        }
}

但是程序的输出是:
A??B

但我期望的应该是:
A     B

谁能告诉我这是为什么?如何解决?
或者有其他更好的方法实现我的需求?


------解决方案--------------------
特殊字符需要替换,如空格, < > 等。
复杂的html推荐使用正则表达式。
------解决方案--------------------
你用替换方法将??替换为空格就可以了