zoukankan      html  css  js  c++  java
  • [android]解析XML文件的方法有三种:PULL,DOM,SAM

    PULL 的工作原理:

    XML pull提供了开始元素和结束元素。当某个元素开始时,可以调用parser.nextText从XML文档中提取所有字符数据。当解析到一个文档结束时,自动生成EndDocument事件。

    常用的XML pull的接口和类:

    XmlPullParser:该解析器是一个在org.xmlpull.v1中定义的解析功能的接口。

    XmlSerializer:它是一个接口,定义了XML信息集的序列。

    XmlPullParserFactory:这个类用于在XMPULL V1 API中创建XML Pull解析器。

    XmlPullParserException:抛出单一的XML pull解析器相关的错误。

    PULL解析器的运行方式和SAX类似,都是基于事件的模式。

    不同的是,在PULL解析过程中返回的是数字,且我们需要自己获取产生的事件然后做相应的操作,而不像SAX那样由处理器触发一种事件的方法,执行我们的代码:

    读取到xml的声明返回 START_DOCUMENT; 结束返回 END_DOCUMENT ; 开始标签返回 START_TAG;

    结束标签返回 END_TAG; 文本返回 TEXT。

    代码如下

    public List<Blog> parse(InputStream is) throws Exception {

    List<Blog> blogList = null;
    Blog blog = null;

    //由android.util.Xml创建一个XmlPullParser实例
    XmlPullParser parser = Xml.newPullParser();

    //设置输入流并指明编码方式
    parser.setInput(is, "UTF-8");

    //产生第一个事件
    int eventType = parser.getEventType();

    while (eventType != XmlPullParser.END_DOCUMENT){

    switch (eventType) {
    //判断当前是否为文档开始事件

    case XmlPullParser.START_DOCUMENT:
    //初始化Blog集合
    blogList = new ArrayList<Blog>();
    break;

    //判断当前事件是否为标签元素开始事件
    case XmlPullParser.START_TAG:

    if (parser.getName().equals("blog")){

    //判断开始标签元素是否为Blog
    blog = new Blog();

    } else if (parser.getName().equals("blogTitle")){

    eventType = parser.next();
    //得到Blog标签的属性值,并设置Tile
    blog.setBlogTile(parser.getText());
    } else if (parser.getName().equals("blogText")) {

    eventType = parser.next();

    //得到Blog标签的属性值,并设置Text
    blog.setBlogText(parser.getText());

    }
    break;

    //判断当前事件是否为标签元素结束事件
    case XmlPullParser.END_TAG:
    //判断标签元素是否为blog
    if(parser.getName().equals("blog")){
    //将blog添加到blogList集合中
    blogList.add(blog);
    blog = null;

    }
    break;
    }
    //进入下一个元素并触发事件
    eventType = parser.next();


    }
    return blogList;
    }

  • 相关阅读:
    Linux 动态库剖析
    【jquery mobile笔记二】jquery mobile调用豆瓣api示例
    地标性建筑
    地标性建筑
    翻译的艺术 —— 专有名词(广告词、国外品牌、语言等)
    翻译的艺术 —— 专有名词(广告词、国外品牌、语言等)
    黄金白银、古董与收藏
    黄金白银、古董与收藏
    经典书单 —— 计算机图形学
    经典书单 —— 计算机图形学
  • 原文地址:https://www.cnblogs.com/julyme/p/4198602.html
Copyright © 2011-2022 走看看