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

大道之行,天下为公。这篇文章主要讲述XML文件解析安卓7——SAX解析相关的知识,希望能为你提供帮助。
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文件中
       
XML文件解析安卓7——SAX解析

文章图片

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

文章图片
XML文件解析安卓7——SAX解析

文章图片
1 public void onCreate(Bundle savedInstanceState) { 2super.onCreate(savedInstanceState); 3SAXParserFactory spf=SAXParserFactory.newInstance(); //SAX解析器的工厂对象 4try { 5SAXParser sp=spf.newSAXParser(); //SAX解析器对象 6//读取资源文件 7InputStream is=getResources().openRawResource(R.raw.book); 8//创建SAX事件处理器对象 9DefaultHandler dh=new DefaultHandler(){ 10private String name; 11public void startElement(String uri, String localName, 12String qName, Attributes attributes) 13throws SAXException { 14name=localName; 15} 16//获得内容 17public void characters(char[] ch, int start, int length) 18throws SAXException { 19if("name".equals(name)){//当标签名是name时,就去获得文本 20Toast.makeText(Sax0.thi s,new String(ch,start,length), 1000).show(); 21name=null; 22} 23} 24}; 25sp.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解析】 

    推荐阅读