关闭

java分析html文档的例子

1081人阅读 评论(0) 收藏 举报

 这个程序把xml文档中的内容提取出来。里面的包都是jdk自带的包。

  import   java.io.*;  
  import   java.util.*;  
  import   javax.swing.text.*;  
  import   javax.swing.text.html.*;  
  import   javax.swing.text.html.parser.*;
  import   javax.swing.text.html.HTMLEditorKit.ParserCallback;

public class Parser extends ParserCallback
{
 protected String base;
 protected boolean isImg = false;
 protected boolean isParagraph = false;
 protected static Vector<String> element = new Vector<String>();
  protected static String paragraphText = new String();  

 public Parser()
 {
 
 }
 
 public static String getParagraphText()
 {
   return paragraphText;
 }
 public void handleComment(char[] data, int pos)
 {
 }
public void handleEndTag(HTML.Tag t, int pos)
{
   if (t == HTML.Tag.P)
   {
   if (isParagraph)
   {
    isParagraph = false;
   }
  } else if (t == HTML.Tag.IMG)
  {
   if (isImg){
    isImg = false;
   }

  }
 }
 public void handleError(String errorMsg, int pos)
 {
 }
 public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos)
 {
  handleStartTag(t, a, pos);
 }
 public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
 {
  if (t == HTML.Tag.P)
  {
   isParagraph = true;
  }else if((t == HTML.Tag.IMG))
   {
  String   src=   (String)a.getAttribute(HTML.Attribute.SRC); 
   if (src != null)
   {
  
     element.addElement(src);
     isImg = true;
   }
   } 
 }
 public void handleText(char[] data, int pos)
 {
 
  if (isParagraph)
  {
   String tempParagraphText = new String(data);
   if (paragraphText != null)
   {
    element.addElement(tempParagraphText);;
 
   }
  }
  }

 
    private   static  void   startParse(String   sHtml){  
                  try{  
                          ParserDelegator   ps   =   new   ParserDelegator();  
                          HTMLEditorKit.ParserCallback   parser   =   new   Parser();  
                          ps.parse(   new   StringReader(sHtml),   parser,   true);
                                 
        System.out.println(getParagraphText());
        Vector link = element;
        for(int i=0;i<link.size();i++)
        {
         System.out.println(link.get(i));
         }
       
                  }catch(Exception   e){  
                          e.printStackTrace();  
                  }  
          }  
 

 public   static   void   main(String   args[]){  
             
   
                  try{  
                          String   filename   ="f://1.htm";  
                          BufferedReader   brd   =new   BufferedReader(new   FileReader(filename));  
                          char[]   str   =   new   char[50000];  
                          brd.read(str);  
                          String   sHtml   =   new   String(   str   );  
   
                          startParse(   sHtml   );  
                  }catch(Exception   e){  
                          e.printStackTrace();  
                  }  
          }  
   
     }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:339762次
    • 积分:4466
    • 等级:
    • 排名:第6648名
    • 原创:99篇
    • 转载:99篇
    • 译文:1篇
    • 评论:46条
    最新评论