• 【安卓7】XML文件解析——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解析
  • 相关阅读:
    POJ2553 The Bottom of a Graph 强连通分量+缩点
    销售里面最猛的还是传销模式
    **Error 1 The type 'System.Web.Compilation.WCFBuildProvider' is ambiguous: it could come from assembly 'C:\Windows\Micro
    自定义Proxy 来做 rest wcf的客户端 与 WebChannelFactory<>的bug
    你知道吗string GetHashCode方法跟环境是有关的吗?
    查找默认的一个实体如果没有就找第一个的写法
    如何解决WCF REST 中 WebFaultException抛出的异常客户端WebChannelFactory无法处理的问题
    Google 的统计或将导致 IE7已终止操作
    类别进行排序的一个简单分析
    抢夺客户的战争
  • 原文地址:https://www.cnblogs.com/leelee/p/6994650.html
Copyright © 2020-2023  润新知