• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • XML的SAX解析

    標簽: JAVA解析  XML  SAX技術

    SAX是一個順序執行,事件驅動的解析方法(事件驅動,簡單地說就是你點什么按鈕(即產生什么事件))

     

    SAX的工作原理;

         

    1.在文檔的開始和結束時觸發文檔處理事件。
    2.在文檔內每一XML元素接受解析的前后觸發元素事件。
    3.任何元數據通常由單獨的事件處理
    4.在處理文檔的DTD或Schema時產生DTD或Schema事件。
    5.產生錯誤事件用來通知主機應用程序解析錯誤。
     

     
    DOM解析博客地址連接:DOM解析
    SAX與DOM解析的優點;SAX解析適合較大的XML文件解析,DOM可以增加節點
     
    SAX解析的主要方法;
    1,創建解析工廠實例
    2,創建解析工廠
    3,解析xml
     startElement() 回調在每次 SAX 解析器遇到元素的起始標記時被調用
    characters() 回調為字符數據所調用
    endElement() 為元素的結束標記所調用
    DefaultHandler類
     
    JAVA解析xml文檔;

     代碼如下
    package SAX解析;
    
    import java.util.ArrayList;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;
    
    /**
     * SAX解析 1.創建解析工廠
     *  2,創建解析工廠實例 
     *  3,工廠實例來解析XML(本地文件,文件解析器)
     * 
     * @author Administrator
     */
    public class SAXDemo {
    	ArrayList<Student> list;
    	Student stu;
    	String strValue;
    
    	public static void main(String[] args) throws Exception {
    		SAXDemo demo = new SAXDemo();
    		demo.sefa();
    
    	}
    
    	public void sefa() throws Exception {
    		//開始時間
    		long l1=System.currentTimeMillis();
    		// 創建工廠實例
    		SAXParserFactory factory = SAXParserFactory.newInstance();
    		// 創建解析工廠
    		SAXParser parser = factory.newSAXParser();
    		String f = "C:\\Users\\Administrator\\Desktop\\xml\\student2.xml";
    		MyDefaultHandler hb = new MyDefaultHandler();
    		// 解析XML
    		parser.parse(f, hb);
    		long l2= System.currentTimeMillis();
    		long end =l2-l1;
    		//1818ms
    		System.out.println("解析時間:"+end+"ms");
    	}
    
    	/**
    	 * 創建外部類,解析XML startDocument開始讀取文本 startElement開始讀取元素
    	 */
    
    	class MyDefaultHandler extends DefaultHandler {
    		// 開始讀取文本
    		public void startDocument() throws SAXException {
    			System.out.println("開始解析..");
    			list = new ArrayList<Student>();
    		}
    		// 結束文本讀取
    		public void endDocument() throws SAXException {
    			// 遍歷隊列
    			for (Student strs : list) {
    				System.out.println(strs);
    			}
    			System.out.println("解析完成..");
    		}
    
    		// 開始讀取元素
    		public void startElement(String uri, String localName, String qName,
    				Attributes attr) throws SAXException {
    			if (qName.equals("stu")) {
    				stu = new Student();
    				list.add(stu);
    				String nums = attr.getValue("num");
    				String nos = attr.getValue("no");
    				if (nums != null) {
    					 stu.num = Integer.parseInt(nums);
    				}
    				if (nos != null) {
    					stu.no = Integer.parseInt(nos);
    				}
    
    			}
    		}
    
    		// 結束元素的讀取
    		public void endElement(String uri, String localName, String qName)
    				throws SAXException {
    
    			if (qName.equals("name")) {
    				stu.name = strValue;
    			}
    			if (qName.equals("sex")) {
    				stu.sex = strValue;
    			}
    			if (qName.equals("cla")) {
    				stu.cla = strValue;
    			}
    		}
    
    		// 讀取字符串
    		public void characters(char ch[], int start, int length)
    				throws SAXException {
    			// 創建字符串
    			strValue = new String(ch, start, length);
    		}
    
    	
    	}
    
    }
    
     

     
     
     
    版權聲明:本文為iteye_10820原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/iteye_10820/article/details/82606467

    智能推薦

    SAX解析XML

    sax解析xml文檔是邊讀邊解的,解析時是按照提前設置好的事件處理方式來執行的。如果你在解析時,想回到前面的節點再次進行解析,對不起做不到。sax的解析方式就決定了它只能做讀的操作,不能做修改、添加、刪除的操作。 sun公司將sax解析的事件分為ContentHandler(內容事件),ErrorHandler(錯誤事件),DTDHandler(DTD約束事件),EntityResolver(實體...

    sax解析xml

    通sax方式解析xml                        ...

    XML解析--使用Sax

    文章目錄 一、使用SAX解析XML介紹 二、使用SAX解析XML的步驟 三、Sax解析XML實例 (1)給出需要解析的XML文件 (2)使用Sax對XML進行解析 一、使用SAX解析XML介紹 SAX解析可以在讀取文檔的時候,就對文檔進行處理,而不必等到整個文檔裝載完才對文檔進行處理。 優點:解析可以立即開始,速度快,沒有內存壓力。 缺點:不能對節點做修改。 二、使用SAX解析XML的步驟 使用S...

    XML:SAX解析

    SAX解析 SAX采用事件處理的方式解析XML文件,利用 SAX 解析 XML 文檔,涉及兩個部分:解析器和事件處理器。 解析器可以使用JAXP的API創建,創建出SAX解析器后,就可以指定解析器去解析某個XML文檔。 解析器采用SAX方式在解析某個XML文檔時,它只要解析到XML文檔的一個組成部分,都會去調用事件處理器的一個方法,解析器在調用事件處理器的方法時,會把當前解析到的xml文件內容作為...

    SAX解析XML文件

    SAX解析XML文件 使用SAX解析時,首先要定義一個專屬的解析器,這個解析器必須繼承一個父類org.xml.sax.helpers.DefaultHandler,在這個類中有如下方法: No 返回值 方法名 描述 1 void startDocument() 文檔開始讀取時觸發 2 void endDocument() 文檔讀取完畢后出發 3 void startElement(String u...

    猜你喜歡

    SAX解析xml文件

    1:SAX -->Simple Api For XML Processer         簡單的Api,用于解析xml文件。        特點:          僅能向前讀取數據。          不會將任...

    sax 解析xml

    本文是參考別人的寫的, 地址忘了,拿人手短,提前聲明一下。 解析步驟: 1.創建一個SAXParserFactory對象 SAXParserFactory factory=SAXParserFactory.newInstance(); 2.獲得解析器 SAXParser parser=factory.newSAXParser(); 3.調用解析方法解析xml,這里的第一個參數可以傳遞文件、流、字符...

    SAX解析XML

    什么是XML? XML 指可擴展標記語言(eXtensible Markup Language)。 你可以通過本站學習XML教程 XML 被設計用來傳輸和存儲數據。 XML是一套定義語義標記的規則,這些標記將文檔分成許多部件并對這些部件加以標識。 它也是元標記語言,即定義了用于定義其他與特定領域有關的、語義的、結構化的標記語言的句法語言。 python對XML的解析 常見的XML編程接口有DOM和...

    使用SAX解析XML文件(SAX解析)

    首先我的XML文件名為a.xml,路徑在項目目錄下,內容如下: 實現代碼如下: 實現效果如下:...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    精品国产乱码久久久久久蜜桃不卡