package chapter12;
/**
* 使用StAX解析器。
* StAX解析器是一种“拉解析器(pull parser)",与安装事件处理不同,你只需要使用下面这样的基本篁来迭代所有的事件:
* InputStream in = url.openStream();
* XMLInputFactory factory = XMLInputFactory.newInstance();
* XMLStreamReader parser = factory.createXMLStreamReader(in);
* while(parser.hasNext()){
* int event = parser.next();
* Call parser methods to obtain event details.
* }
*
* 例如:在解析下面片断时
* <font>
* <name> Helvetica</name>
* <size units = "pt">36</size>
* </font>
*
* 解析器将产生下面的事件:
* 1.START_ELEMTNT,元素名:font
* 2.CHARACTERS,内容:空白字符
* 3.START_ELEMTNT,元素名:name
* 4.CHARACTERS,内容:Helvetica
* 5.START_ELEMTNT,元素名:name
* 6.CHARACTERS,内容:空白字符
* 7.START_ELEMTNT,元素名:size
* 8.CHARACTERS,内容:36
* 9.START_ELEMTNT,元素名:size
* 10.CHARACTERS,内容:空白字符
* 11.START_ELEMTNT,元素名:font
* 要分析这些值,需要调用XMLStreamReader类的恰当方法例如:
* String units = parser.getAttributeValue(null, "units"); //获取当前元素的units属性。
*
*
*/
import java.io.*;
import java.net.*;
import javax.xml.stream.*;
public class StAXTest1 {
public static void main(String[]args) throws Exception{
String[] str = {"http://www.w3c.org"}; //测试一
// String[] str = {"http://www.baidu.com"}; //测试二
method(str);
}
public static void method(String[] str) throws Exception{
String urlString;
if(str.length == 0) {
urlString = "http://www.w3c.org";
System.out.println("Using " + urlString);
}else urlString = str[0];
URL url = new URL(urlString);
System.out.println("str[0] = " + str[0]);
System.out.println("url = " +url);
InputStream in = url.openStream();
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = factory.createXMLStreamReader(in);
while(parser.hasNext()){
System.out.println(parser.next());
int event = parser.next();
if(event == XMLStreamConstants.START_ELEMENT){
if(parser.getLocalName().equals("a")){
String href = parser.getAttributeValue(null,"href"); //获取当前的href属性。
if(href == null){
System.out.println(href);
}
}
}
}
}
public static void method1(){
}
}
/**
* 使用StAX解析器。
* StAX解析器是一种“拉解析器(pull parser)",与安装事件处理不同,你只需要使用下面这样的基本篁来迭代所有的事件:
* InputStream in = url.openStream();
* XMLInputFactory factory = XMLInputFactory.newInstance();
* XMLStreamReader parser = factory.createXMLStreamReader(in);
* while(parser.hasNext()){
* int event = parser.next();
* Call parser methods to obtain event details.
* }
*
* 例如:在解析下面片断时
* <font>
* <name> Helvetica</name>
* <size units = "pt">36</size>
* </font>
*
* 解析器将产生下面的事件:
* 1.START_ELEMTNT,元素名:font
* 2.CHARACTERS,内容:空白字符
* 3.START_ELEMTNT,元素名:name
* 4.CHARACTERS,内容:Helvetica
* 5.START_ELEMTNT,元素名:name
* 6.CHARACTERS,内容:空白字符
* 7.START_ELEMTNT,元素名:size
* 8.CHARACTERS,内容:36
* 9.START_ELEMTNT,元素名:size
* 10.CHARACTERS,内容:空白字符
* 11.START_ELEMTNT,元素名:font
* 要分析这些值,需要调用XMLStreamReader类的恰当方法例如:
* String units = parser.getAttributeValue(null, "units"); //获取当前元素的units属性。
*
*
*/
import java.io.*;
import java.net.*;
import javax.xml.stream.*;
public class StAXTest1 {
public static void main(String[]args) throws Exception{
String[] str = {"http://www.w3c.org"}; //测试一
// String[] str = {"http://www.baidu.com"}; //测试二
method(str);
}
public static void method(String[] str) throws Exception{
String urlString;
if(str.length == 0) {
urlString = "http://www.w3c.org";
System.out.println("Using " + urlString);
}else urlString = str[0];
URL url = new URL(urlString);
System.out.println("str[0] = " + str[0]);
System.out.println("url = " +url);
InputStream in = url.openStream();
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = factory.createXMLStreamReader(in);
while(parser.hasNext()){
System.out.println(parser.next());
int event = parser.next();
if(event == XMLStreamConstants.START_ELEMENT){
if(parser.getLocalName().equals("a")){
String href = parser.getAttributeValue(null,"href"); //获取当前的href属性。
if(href == null){
System.out.println(href);
}
}
}
}
}
public static void method1(){
}
}