当前位置: 技术问答>java相关
急!急!急!谁知道关于用java解析html文档?
来源: 互联网 发布时间:2015-01-30
本文导语: 我先在在写一个程序,用到了java解析html文档。 我的程序运行环境是:windows2000,jdk1.3,xerces1.4.1. 谁能告诉我该用java的哪个包的哪个类,以及具体方法。 我十分着急,在线等候。方法或代码可行就给分。 | ...
我先在在写一个程序,用到了java解析html文档。
我的程序运行环境是:windows2000,jdk1.3,xerces1.4.1.
谁能告诉我该用java的哪个包的哪个类,以及具体方法。
我十分着急,在线等候。方法或代码可行就给分。
我的程序运行环境是:windows2000,jdk1.3,xerces1.4.1.
谁能告诉我该用java的哪个包的哪个类,以及具体方法。
我十分着急,在线等候。方法或代码可行就给分。
|
我已经用过,给你一个例子程序也许对你有帮助
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=/tech-qa-java/article-16152313290214200262.html(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=/tech-qa-java/article-16152313290214200262.html(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
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=/tech-qa-java/article-16152313290214200262.html(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=/tech-qa-java/article-16152313290214200262.html(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