• 【安卓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解析
  • 相关阅读:
    Servlet文件上传下载
    通过jquery将多选框变单选框
    Java 浮点数精度控制
    JS实现点击table中任意元素选中
    SpringMVC-时间类型转换
    SpringMVC--提交表单
    路径 专题
    防盗链
    Request
    RequestResponse简介
  • 原文地址:https://www.cnblogs.com/leelee/p/6994650.html
Copyright © 2020-2023  润新知