Android开发之使用pull解析xml文件
来源:互联网 发布:100本网络禁书在线阅读 编辑:程序博客网 时间:2024/05/16 08:45
XML在Android中是非常常见用来保存数据的文件,解析的方法也很多,如:DOM、SAX、PULL,其中PULL是Android自带的解析XML方法
DOM:是一次性加载完,生成树状结构,但消耗内存较大,如果这个xml文件比较大就不适合使用DOM来解析
SAX:是基于事件的方式,边加载边解析,效率较高,但解析过不能倒退
PULL:跟ASX有点类似,也是基于事件
程序目录结构
使用pull解析
package com.example.xmlpullparserdemo.service;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import android.util.Xml;import com.example.xmlpullparserdemo.domain.UserInfo;public class UserService {/** * 使用pull解析xml文件 * * @param is * @return */public static List<UserInfo> getUserInfos(InputStream is) {try {XmlPullParser xmlPullParser = Xml.newPullParser();// 初始化解析器xmlPullParser.setInput(is, "utf-8");List<UserInfo> userInfos = null;UserInfo userInfo = null;int type = xmlPullParser.getEventType();while (type != XmlPullParser.END_DOCUMENT) {switch (type) {case XmlPullParser.START_TAG: // 开始解析标签// 根标签if ("users".equals(xmlPullParser.getName())) {userInfos = new ArrayList<UserInfo>();} else if ("user".equals(xmlPullParser.getName())) {userInfo = new UserInfo();String id = xmlPullParser.getAttributeValue(0);userInfo.setId(Integer.parseInt(id));} else if ("name".equals(xmlPullParser.getName())) {String name = xmlPullParser.nextText();userInfo.setName(name);} else if ("age".equals(xmlPullParser.getName())) {String age = xmlPullParser.nextText();userInfo.setAge(Integer.parseInt(age));} else if ("sex".equals(xmlPullParser.getName())) {String sex = xmlPullParser.nextText();userInfo.setSex(sex);} else if ("brithday".equals(xmlPullParser.getName())) {String brithday = xmlPullParser.nextText();userInfo.setBrithday(Integer.parseInt(brithday));}break;case XmlPullParser.END_TAG:if ("user".equals(xmlPullParser.getName())) {userInfos.add(userInfo);userInfo = null;}break;default:break;}type = xmlPullParser.next(); // 获取下一个节点}return userInfos;} catch (Exception e) {// TODO: handle exception}return null;}}
主Activity类
package com.example.xmlpullparserdemo;import java.util.List;import com.example.xmlpullparserdemo.domain.UserInfo;import com.example.xmlpullparserdemo.service.UserService;import android.os.Bundle;import android.widget.TextView;import android.app.Activity;public class MainActivity extends Activity {private TextView text;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);text = (TextView)findViewById(R.id.text);List<UserInfo> infos = UserService.getUserInfos(MainActivity.class.getClassLoader().getResourceAsStream("backup.xml"));System.out.println("---onCreate");StringBuffer sp = new StringBuffer();for(UserInfo info : infos){System.out.println(info.toString());sp.append(info.toString());sp.append("\n");}text.setText(sp.toString());}}
得到的结果
Demo下载
点击打开链接
- Android开发之使用pull解析xml文件
- Android开发之Pull解析XML文件
- Android开发之Pull解析读取和生成XML文件
- android开发笔记之PULL解析xml文件
- Android开发之使用PULL解析和生成XML
- Android开发之使用PULL解析和生成XML
- Android之Pull解析XML文件
- android 使用 pull 解析xml文件
- android 使用 pull 解析xml文件
- android 使用pull方式解析xml文件
- android 使用pull 方式解析 xml文件
- Android 中使用Pull解析XML文件
- Android 读写XML文件(使用pull解析)
- Android 中使用Pull解析XML文件
- Android学习-- 使用Pull解析XML文件
- Android-使用pull解析xml文件
- Android使用pull方法解析XML文件
- Android中使用pull解析xml文件
- sleep(0) 与sleep(>0)区别
- 图像处理Matlab(一)——图像灰度值
- 如何成为一名嵌入式系统工程师
- ThreadLocal 的实现
- Java选择排序和冒泡排序示例
- Android开发之使用pull解析xml文件
- UML用例图
- Repeater也能多行多列显示数据!!
- hadoop,hbase,hive安装全记录 (转)
- BCM VOIP 数图算法分析
- ispreedSheet ios编辑类似表格界面在ipad上
- java生成随机数总结
- android 人脸识别
- 客户端 用不用 bind 的区别