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

Posted ***半夏微凉***

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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文件中

      

 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解析的主要内容,如果未能解决你的问题,请参考以下文章

Sax 解析 XMl

SAX解析文件

Android 之XML数据解析—— SAX解析

Java web——xml文件读取的解析方式(DOM和SAX)

XML的两种解析方式

javaweb学习总结十二(JAXP对XML文档进行SAX解析)