Android pull解析xml的实现方法

Android pull解析xml的实现方法

资源文件:

persons.xml

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<persons>
  <person id="101">
    <name>jame</name>
    <age>18</age>
  </person>
  <person id="102">
    <name>Tom</name>
    <age>20</age>
  </person>
  <person id="103">
    <name>Jack</name>
    <age>16</age>
  </person>
  <person id="104">
    <name>Rose</name>
    <age>26</age>
  </person>
</persons>

activity布局文件

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context="${relativePackage}.${activityClass}" > 

  <TextView
    android:id="@+id/tv_content"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" /> 

  <Button
    android:id="@+id/bt_read"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="读取xml文件" /> 

</LinearLayout>

javaBean:

public class Person {
  private int id;
  private String name;
  private int age; 

  public Person() {
    super();
  } 

  public Person(int id, String name, int age) {
    super();
    this.id = id;
    this.name = name;
    this.age = age;
  } 

  public int getId() {
    return id;
  } 

  public void setId(int id) {
    this.id = id;
  } 

  public String getName() {
    return name;
  } 

  public void setName(String name) {
    this.name = name;
  } 

  public int getAge() {
    return age;
  } 

  public void setAge(int age) {
    this.age = age;
  } 

  @Override
  public String toString() {
    return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
  } 

}

主activity:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; 

import org.xmlpull.v1.XmlPullParser; 

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Xml;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener { 

  private TextView tv_content; 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

    tv_content = (TextView) findViewById(R.id.tv_content); 

    findViewById(R.id.bt_read).setOnClickListener(this); 

  } 

  @Override
  public void onClick(View v) {
    try {
      if (Environment.getExternalStorageState().equals(
          Environment.MEDIA_MOUNTED)) { 

        List<Person> persons = new ArrayList<Person>();
        Person person = null; 

        File sd_file = Environment.getExternalStorageDirectory();
        File file = new File(sd_file, "persons.xml");
        InputStream inputStream = new FileInputStream(file);
        // 获取xml Pull解析器
        XmlPullParser pullParser = Xml.newPullParser();
        // 解析文件
        pullParser.setInput(inputStream, "utf-8");
        // 得到事件类型(START_DOCUMENT,END_DOCUMENT,START_TAG, END_TAG, TEXT,
        // etc)
        int eventType = pullParser.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
          switch (eventType) {
          case XmlPullParser.START_TAG:
            // 获取标签的名称
            String tag_name = pullParser.getName();
            if ("person".equals(tag_name)) {
              person = new Person();
              persons.add(person); 

              // String value = pullParser.getAttributeValue(null,
              // "id");
              String value = pullParser.getAttributeValue(0);
              person.setId(Integer.parseInt(value));
            } else if ("name".equals(tag_name)) {
              // pullParser.next();
              // String text = pullParser.getText();
              String text = pullParser.nextText();
              person.setName(text); 

            } else if ("age".equals(tag_name)) {
              // pullParser.next();
              // String text = pullParser.getText();
              String text = pullParser.nextText();
              person.setAge(Integer.parseInt(text));
            }
            break; 

          default:
            break;
          }
          eventType = pullParser.next();
        }
        tv_content.setText(persons.toString());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android解析XML(PULL)展示到ListView

    Android解析XML展示到ListView运行后的效果图如下: 服务端的请求页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://

  • Android编程解析XML文件的方法详解【基于XmlPullParser】

    本文实例讲述了Android编程解析XML文件的方法.分享给大家供大家参考,具体如下: 前言 在学习Android的Framework层源码时,Android大量的使用XmlPullParser来解析xml文件的源码.因此,这里也顺道介绍一下XmlPullParser的使用. XML XML(eXtensible Markup Language)中文名为可扩展标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等. 用途 XML设计用了传送及携带数据信息,

  • Android编程使用pull方式解析xml格式文件的方法详解

    本文实例讲述了Android编程使用pull方式解析xml格式文件的方法.分享给大家供大家参考,具体如下: 上次已经说过使用Android sax解析xml,实际上还可以使用pull解析xml.这样的方式效率也是比较高的.pull不仅可以在Android上使用也可以用在javaee里面,需要的就是pull的jar包.这次的xml也使用上次的那个,如下所示 <?xml version="1.0" encoding="UTF-8"?> <persons

  • android4.0混淆XmlPullParser报错原因分析解决

    复制代码 代码如下: [2013-05-20 17:30:52 - danielinbiti] Proguard returned with error code 1. See console [2013-05-20 17:30:52 - danielinbiti] Note: there were 67 duplicate class definitions. [2013-05-20 17:30:52 - danielinbiti] Warning: library class android

  • 实例解析Android中使用Pull解析器解析XML的方法

    1.Pull简介 Pull解析器是Android系统内置的的,Pull解析器与SAX解析器类似,他提供了类似的事件,如开始元素和介绍元素的事件,使用parser.next()可以进入下一个元素并触发相应的事件,然后进行相应的处理,当元素开始解析时,调用perser.nextText()方法就可以获取到下一个Text类型元素的值. 2.pull特点 (1)简单的结构,一个接口,一个另外,一个工厂组成了Pull解析器 (2)简单易用,Pull解析器只有一个重要的方法next(),他被用来检索下一个事

  • 详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    1.xml文件代码 <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/xml; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core

  • Android平台基于Pull方式对XML文件解析与写入方法详解

    本文详细讲述了Android平台基于Pull方式对XML文件解析与写入方法.分享给大家供大家参考,具体如下: XML技术在跨平台的情况下的数据交互中得到了广泛的应用,假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,具体实现涉及到对XML文件进行解析及写入的技术.本文实现在Android平台上基于Pull方式对XML文件解析的技术. XmlPullParser是一个Java实现的开源API包(源码下载地

  • Android XmlPullParser 方式解析 Xml 文档

    Android XmlPullParser 方式解析 Xml 文档 xml 文件格式 <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="1"> <name>张三</name> <age>22</age> </person> <person id="2"&g

  • Android pull解析xml的实现方法

    Android pull解析xml的实现方法 资源文件: persons.xml <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <persons> <person id="101"> <name>jame</name> <age>18</age> </person>

  • Android编程解析XML方法详解(SAX,DOM与PULL)

    本文实例讲述了Android编程解析XML方法.分享给大家供大家参考,具体如下: XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法. 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析器,下面,我将一一向大家详细介绍. SAX解析器: SAX(Simple API for XML)解析器是一种基于事

  • 在Android系统中解析XML文件的方法

    前言     在学习Android的Framework层源码时,Android大量的使用XmlPullParser来解析xml文件的源码.因此,这里也顺道介绍一下XmlPullParser的使用. XML     XML(eXtensible Markup Language)中文名为可扩展标记语言.标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等. 用途     XML设计用了传送及携带数据信息,不用了表现或展示数据,HTML语言则用了表现数据,所以XML用途

  • Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>李明</name> <age>30</age> </person> <pe

  • Android App中使用Pull解析XML格式数据的使用示例

    Pull解析XML文件的方式与SAX解析XML文件的方式大致相同,他们都是基于事件驱动的.所以,利用pull解析XML文件需要下面几个步骤: 1)通过XMLPullParserFactory获取XMLPullParser对象. 2)通过XMLPullParser对象设置输入流. 3)通过parser.next(),持续的解析XML文件直到文件的尾部. 下面的几个方法是经常需要的:XMLPullParserFacotry.newInstance( )    facotry.newPullParse

  • 浅谈Android Studio 解析XML的三种方法

    一丶概述 文件解析要求,json解析和xml解析,前面文章说过Json转实体类,这里就说说解析XML 内容: Android Studio 解析XML常见的三种方式:DOM PULL SAX (实现XML转实体类并打印输出) 效果演示: 二丶正文 SAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关信息.它是一种以事件为驱动的XML API,解析速度快,占用内存少.使用回调函数来实现. 缺点是不能倒退. DOM(Document Object Model)

  • Android编程使用sax解析xml数据的方法详解

    本文实例讲述了Android编程使用sax解析xml数据的方法.分享给大家供大家参考,具体如下: 随着技术的发展,现在的web已经和以前不同了.web已经逐渐像移动的方向倾斜,作为程序员的确应该拓展一下自己的知识层面.学习各方面的知识,今天就接着前几天的弄一下Android的xml解析,这次就使用sax的方式解析xml.下面就一步一步的来做吧. 1. 编写一个简单的xml <?xml version="1.0" encoding="UTF-8"?> &l

  • 使用go语言解析xml的实现方法(必看篇)

    操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 现有一个自动报障程序,如果服务出错会自动给指定人发送邮件,配置文件内容如下(default.xml): <?xml version="1.0" encoding="UTF-8"?> <config> <smtpServer>smtp.163.com</smtpServer> <smtpPort>25</smtpPort&g

随机推荐