XML SAX解析实战
掌握SAX事件驱动解析,高效处理大型XML文档。 · 难度:入门 · +15XP
SAX解析原理
SAX(Simple API for XML)采用事件驱动模型,边读边解析,不加载整个文档,内存占用低,适合处理大型XML文件。解析器在遇到开始标签、结束标签、文本等元素时触发回调。
主要事件
| 事件 | 回调方法 | 说明 |
|---|---|---|
| 文档开始 | startDocument() | 解析开始时调用 |
| 元素开始 | startElement() | 遇到开始标签 |
| 文本内容 | characters() | 读取字符数据 |
| 元素结束 | endElement() | 遇到结束标签 |
示例:统计元素数量
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class BookCounter extends DefaultHandler {
private int count = 0;
public void startElement(String uri, String localName, String qName, Attributes atts) {
if (qName.equals("book")) count++;
}
public void endDocument() {
System.out.println("图书数量:" + count);
}
public static void main(String[] args) throws Exception {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse("books.xml", new BookCounter());
}
}
练习提示
扩展处理器,在遇到特定书名时输出其作者。注意characters方法可能会被多次调用。