这里我们假设要解析的xml文件名为:test.xml,我们将其放在assets路径中。

xml文件内容为:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?><books>    <book id="1">        <name>Java编程思想</name>        <price>29.9</price>        <date>2013年11月11日</date>    </book>    <book id="2">        <name>PHP和MySQL WEB开发</name>        <price>49.9</price>        <date>2009年10月01日</date>    </book>    <book id="3">        <name>鸟哥的Linux私房菜</name>        <price>60.0</price>        <date>2010年05月30日</date>    </book></books>

下面的代码演示了如何去解析一个xml文件(注意assets文件流的获取方式)

  private void pullXml() {        InputStream inputStream = null;        List<Book> bookList = null;        Book book = null;        try {            //初始化parser            AssetManager assetManager=this.getAssets();            inputStream = assetManager.open("test.xml");            XmlPullParser parser = Xml.newPullParser();            parser.setInput(inputStream, "utf-8");            //开始读取数据            int type = parser.getEventType();            while (type != XmlPullParser.END_DOCUMENT) {//1                switch (type) {                    case (XmlPullParser.START_TAG)://0                        if ("books".equals(parser.getName())) {                            bookList = new ArrayList<Book>();                        } else if ("book".equals(parser.getName())) {                            book = new Book();                            //获取book的id                            String id = parser.getAttributeValue(0);                            book.setId(Integer.parseInt(id));                        } else if ("name".equals(parser.getName())) {                            book.setName(parser.nextText());                        } else if ("price".equals(parser.getName())) {                            book.setPrice(Double.parseDouble(parser.nextText()));                        } else if ("date".equals(parser.getName())) {                            book.setDate(parser.nextText());                        }                        break;                              case (XmlPullParser.END_TAG)://3                        if ("book".equals(parser.getName())) {                            bookList.add(book);                            book = null;                        }                        break;                }                type = parser.next();            }        } catch (Exception e) {            Toast.makeText(this, "解析出错", Toast.LENGTH_LONG).show();            e.printStackTrace();        }        Toast.makeText(this, "长度"+bookList.size(), Toast.LENGTH_LONG).show();        for (Book book1 : bookList) {            Log.d("book", book1.toString());        }    }

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. font 在xml使用
  6. QT on Android(安卓)开机动画和开机图片显示
  7. android JNI 开发之—导入so库、jar包并调用
  8. android中expandablelistview的学习
  9. Android使用Google Map API创建的一个根据经纬度定位的程序二

随机推荐

  1. Android(安卓)官方Sample
  2. android UI布局 layer-list
  3. 移动应用测试框架—Calabash Android(安
  4. android小注意
  5. Android应用程序启动时发生AndroidRuntim
  6. Android
  7. android intent 最大传送内容 1m
  8. 【Linux】Lock cpu freq on Linux and An
  9. Android(安卓)P SystemUi启动流程
  10. Android下使用Logcat打印信息