使用javax.swing.text.html包解析html文档,通过java语言解析Html文档

package   util;

import   java.io.*;

import   java.util.*;

import   javax.swing.text.*;

import   javax.swing.text.html.*;

import   javax.swing.text.html.parser.*;

/**

*   解析HTML文件中特定元素

*   LINK   href

*   A   href

*   IMG   src

*   SCRIPT   src

*

*/

public   class   ParseHtml{

public   static   void   main(String   args[]){

ParseHtml   ph   =   new   ParseHtml();

try{

String   filename   =   "d:\\y\\scounix.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();

}

}

private   static   void   startParse(String   sHtml){

try{

ParserDelegator   parser   =   new   ParserDelegator();

HTMLEditorKit.ParserCallback   callback   =   new   Callback();

parser.parse(   new   StringReader(sHtml),   callback,   true);

}catch(Exception   e){

e.printStackTrace();

}

}

static   class   Callback   extends   HTMLEditorKit.ParserCallback{

public   void   handleSimpleTag(HTML.Tag   t,   MutableAttributeSet   a,   int   pos){

if(t.equals(HTML.Tag.IMG)){

String   src=   (String)a.getAttribute(HTML.Attribute.SRC);

System.out.println("No."   +   count   +   "   IMG   src="   +   src);

count++;

}

if(t.equals(HTML.Tag.LINK)   ){

String   href   =   (String)a.getAttribute(HTML.Attribute.HREF);

System.out.println("No."   +   count   +   "   LINK   src="   +   href   );

count   ++;

}

}

public   void   handleStartTag(HTML.Tag   t,   MutableAttributeSet   a,int   pos){

if(t.equals(HTML.Tag.A)   ){

String   src=   (String)a.getAttribute(HTML.Attribute.HREF);

System.out.println("No."   +   count   +   "   A   href="   +   src   );

count   ++;

}

if(t.equals(HTML.Tag.SCRIPT)   ){

String   src   =   (String)a.getAttribute(HTML.Attribute.SRC);

System.out.println("No."   +   count   +   "   SCRIPT   src="   +   src   );

count   ++;

}

}

private   int   count   =   1;

}

}

说明:其中的staic   class可以改为class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值