import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.helpers.*;
import org.xml.sax.*;
public class Test {
public static void main(String[] args) {
try {
String url="http://www.w3c.org";
DefaultHandler dh=new DefaultHandler(){//执行器 解析元素
public void startElement(String url,String lname,String qname,Attributes a){//重写方法
if (lname.equals("a")&&a!=null) {
for (int i = 0; i < a.getLength(); i++) {
String name=a.getLocalName(i);
if (name.equals("href")) {
System.out.println(a.getValue(i));
}
}
}
}
};
SAXParserFactory sfactory=SAXParserFactory.newInstance();//获取工厂类实例
sfactory.setNamespaceAware(true);//设置为true,支持命令空间特性
SAXParser sparser=sfactory.newSAXParser();//通过工厂类返回saxparser的实例
InputStream input=new URL(url).openStream();//通过url创建一个输入流
sparser.parse(input, dh);//解析元素,第一个参数为输入流 第二个参数为执行器
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行速度大约在10秒左右,视网速和解析网页复杂度影响,挺有意思的东西。