JAXP學習總結

jopen 12年前發布 | 13K 次閱讀 JAXP XML操作類庫

1.JAXP簡介

和DOM一樣,都是一種XML解析技術。JAXP開發包是JavaSE的一部分

在javax.xml.parsers包中,定義了幾個工廠類,通過調用這些工廠類,可以得到對XML文檔進行解析的DOM或SAX的解析器對象

2.SAX解析的特點

不同于DOM解析,SAX無需加載整個XML文檔,即在讀取文檔的時候便對文檔進行處理

SAX采用事件處理的方式解析XML文件,利用SAX解析XML文檔,涉及 解析器 和 事件處理器 兩個部分。

    解析器:可以使用JAXP的API創建,創建出SAX解析器后,便可以指定解析器去解析某個XML文檔。

    事件處理器:由程序員編寫

3.DEMO

有如下XML文件car.xml

    <?xml version="1.0" encoding="UTF-8"?>  
    <車輛清單>  
        <汽車>  
            <車牌 出產時間="2011年">奧迪</車牌>  
            <產地>北京</產地>  
            <單價>30</單價>  
        </汽車>  
    </車輛清單>  
使用SAX解析該文件
    package web.java.xml.sax;

import java.io.File;  

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

import org.xml.sax.Attributes;  
import org.xml.sax.helpers.DefaultHandler;  

/** 
 * 基于SAX解析XML文件 
 * @author well 
 * 
 */  
public class Demo1 {  
    public static void main(String[] args) throws Exception {  
        //創建SAX解析器工廠  
        SAXParserFactory factory = SAXParserFactory.newInstance();  
        //創建SAX解析器  
        SAXParser saxParser = factory.newSAXParser();  
        File file = new File("src/web/java/xml/sax/car.xml");  
        //加載XML文件  
        saxParser.parse(file, new MyHanler());  
    }  
}  

//自定義SAX處理器  
class MyHanler extends DefaultHandler{  
    public void startElement(  
            String uri,   
            String localName,   
            String qName,   
            Attributes attributes){  
        System.out.println("<"+qName+">");  
        System.out.println("有"+attributes.getLength()+"個屬性");  
        System.out.println(attributes.getValue("出產時間"));  
    }   
    public void endElement(  
            String uri,   
            String localName,   
            String qName){  
        System.out.println("</"+qName+">");  
    }   
    public void characters(  
            char[] ch,   
            int start,   
            int length){  
        String content = new String(ch,start,length);  
        if(content.trim().length()>0){  
            System.out.println(content);  
        }  
    }   
}  </pre> <p></p>

來自:http://blog.csdn.net/tao_sun/article/details/9004829

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!