1DOM解析与SAX解析比较:

DOM解析

SAX解析

原理: 一次性加载xml文档,不适合大容量的文件读取

原理: 加载一点,读取一点,处理一点。适合大容量文件的读取

DOM解析可以任意进行增删改成

SAX解析只能读取

DOM解析任意读取任何位置的数据,甚至往回读

SAX解析只能从上往下,按顺序读取,不能往回读

DOM解析面向对象的编程方法(NodeElementAttribute,Java开发者编码比较简单。

SAX解析基于事件的编程方法。java开发编码相对复杂。

2 SAX解析工具

SAX解析工具-  Sun公司提供的。内置在jdk中。org.xml.sax.*

 

核心的API

   SAXParser类: 用于读取和解析xml文件对象

parseFile f, DefaultHandler dh)方法: 解析xml文件

 

参数一: File:表示 读取的xml文件。

    参数二: DefaultHandlerSAX事件处理程序。使用DefaultHandler的子类

例如:{

      1.创建SAXParser对象  

              SAXParser parser=SAXParserFactory.newInstance().newSAXParser();

       2.调用parse方法

    parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());

   }

 

  3.DefaultHandler类的API:

 

    void startDocument()  :  在读到文档开始时调用

 

    void endDocument()  :在读到文档结束时调用

 

    void startElement(String uri, String localName, String qName, Attributes attributes)  :读到开始标    签时调用

 

    void endElement(String uri, String localName, String qName)   :读到结束标签时调用

 

    void characters(char[] ch, int start, int length)   读到文本内容时调用

3.SAM解析练习:

  1.基本练习,查看函数调用;

  SamExercise.java:

package com.dom4j.SAM;

import java.io.File;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;

public class SamExercise {

    public static void main(String[] args) throws Exception, SAXException {
        SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
        parser.parse(new File("./src/contact.xml"), new MyDefalutHandler());
    }

}
View Code

相关文章: