simple api for java
采用顺序方式访问,比dom要快
首先要编写SAX解析器,继承default Handler 覆盖父类的方法
package sax;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class MySAX extends DefaultHandler {
public void startDocument() throws SAXException {
System.out.println("<?xml version=\"1.0\" encoding=\"GBK\">");
}
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.print("<");
System.out.print(qName);
if (attributes != null) { // 如果存在了属性
for (int x = 0; x < attributes.getLength(); x++) {
System.out.print(" " + attributes.getQName(x) + "=\"" + attributes.getValue(x) + "\"");
}
}
System.out.print(">");
}
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.print("<");
System.out.print(qName);
System.out.print(">");
}
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.print(new String(ch, start, length));
}
public void endDocument() throws SAXException {
System.out.println("文档结束。。。");
}
}
在main函数里面解析
package sax ;
import java.io.* ;
import javax.xml.parsers.* ;
public class TestSAX {
public static void main(String args[]) throws Exception {
// 建立SAX解析工厂
File directory = new File("");//设定为当前文件夹
String basepath=directory.getAbsolutePath();
String path=basepath+"/xmlfile/sax_demo.xml";
SAXParserFactory factory = SAXParserFactory.newInstance() ;
SAXParser parser = factory.newSAXParser() ;
parser.parse(path,new MySAX()) ;
}
}
可以看出,xml解析的编程步骤一般都是
1.获取factory
2.通过factory获取解析器parser
3.调用解析器的方法解析文档