SAX与DOM最大的不同是,SAX以流的形式读取XML,而不是一下把DOM load到内存中,因此SAX特别适合用来读取超大XML文件。
使用起来也很简单,本质上就是SAX在遇到XML中的Element的时候会自动调用一些方法,例如下例中的startElement,endElement,characters。我们仅需要在这些方式中用代码实现希望对XML的处理。
直接看例子吧:
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXTesting {
public static void main(String argv[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
public void startElement(String uri, String localName,
throws SAXException {
System.out.println(qName);
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
}
public void characters(char ch[], int start, int length)
throws SAXException {
System.out.println(new String(ch, start, length));
}
};
saxParser.parse("d:\\book\\file.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}