1. 程式人生 > >XML文件解析【安卓7】——SAX解析

XML文件解析【安卓7】——SAX解析

try 讀取資源文件 結束 文件解析 簡單 put log 空間 img

XML文件解析

XML解析:XML技術是Android平臺的應用基礎,

  Android提供了多種解析XML的方式:SAX解析、DOM解析、PULL解析

SAX解析

SAX ——Simple API forXML (XML簡單的API)

——解析速度快、占用內存少

——提供一組簡單的API用於解析XML文件

——SAX在解析XML文件前,先指定一個解析事件處理器(Handler),SAX會對XML文檔進行簡單的順序掃描,當掃描到

【文檔(Document)的開始和結束、元素(Element)的開始和結束的】標記Tag時,會給之前指定的解析事件處理器發送消息,由處理器來處理相應的事件。 當XML文檔掃描完畢,則整個解析過程結束。

SAX解析方法

  • 創建SAX解析器的工廠對象

  SAXParserFactory.newInstance

  • 創建SAXParser解析器對象

   SAXParserFactory.newInstance

  • XML文檔開始時觸發本方法

   DefaultHandler.startDocument ()

  • XML文檔結束時觸發本方法

  DefaultHandler.endDocument ()

  • 元素開始時觸發本方法

   DefaultHandler.startElement (String uri, String localName, String qName, Attributes attributes)

  • 元素開始時觸發本方法

  DefaultHandler.endElement (String uri, String localName, String qName, Attributes attributes)

    參數:

uri:命名空間

localName:不帶命名空間的標簽名

qName:帶命名空間的標簽名

attributes:所有屬性和屬性值

  • 讀到元素內容時,觸發本方法

  DefaultHandler. characters (char [] ch, int start, int length)

SAX解析代碼

自定義xml文件存放到res/raw文件中

技術分享

技術分享
 1 public void onCreate(Bundle savedInstanceState) {
 2       super.onCreate(savedInstanceState);
 3         SAXParserFactory spf=SAXParserFactory.newInstance();//SAX解析器的工廠對象
 4         try {
 5             SAXParser sp=spf.newSAXParser();//SAX解析器對象
 6             //讀取資源文件
 7             InputStream is=getResources().openRawResource(R.raw.book);
 8             //創建SAX事件處理器對象
 9             DefaultHandler dh=new DefaultHandler(){
10                 private String name;
11                 public void startElement(String uri, String localName,
12                         String qName, Attributes attributes)
13                         throws SAXException {
14                     name=localName;
15                 }
16                 //獲得內容
17                 public void characters(char[] ch, int start, int length)
18                         throws SAXException {
19                     if("name".equals(name)){     //當標簽名是name時,就去獲得文本
20                         Toast.makeText(Sax0.thi s,new String(ch,start,length), 1000).show();
21                         name=null;
22                     }
23                 }
24             };
25             sp.parse(is, dh);
26         } catch (ParserConfigurationException e) {         e.printStackTrace();
27         } catch (SAXException e) {             e.printStackTrace();
28         } catch (IOException e) {             e.printStackTrace();        }
29   }
SAX解析

XML文件解析【安卓7】——SAX解析