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