Android学习(24) -- 数据存储之解析xml数据
2016-04-14 23:15
489 查看
之前的两篇文章,主要是用于生成xml文件,有生成比然会有xml解析。在Android中我们可以使用dom、sax等java的解析方式,但我们使用Android提供的pull解析方式来解析xml文件。
1、通过 Xml.newPullParser()创建解析器
2、通过setInput制定输入流和编码格式
3、getEventType()获取当前结点类型
XmlPullParser.START_DOCUMENT , XmlPullParser.END_DOCUMENT, XmlPullParser.START_TAG ,XmlPullParser.END_TAG
4、getName()获取当前节点的名字
5、nextText()获取当前节点的下一个节点的文本
1、通过 Xml.newPullParser()创建解析器
2、通过setInput制定输入流和编码格式
3、getEventType()获取当前结点类型
XmlPullParser.START_DOCUMENT , XmlPullParser.END_DOCUMENT, XmlPullParser.START_TAG ,XmlPullParser.END_TAG
4、getName()获取当前节点的名字
5、nextText()获取当前节点的下一个节点的文本
public void click(View v){ //获取到src文件夹下的资源文件 InputStream is = getClassLoader().getResourceAsStream("sms.xml"); //拿到pull解析器对象 XmlPullParser xp = Xml.newPullParser(); //初始化 try { xp.setInput(is, "utf-8"); //获取当前节点的事件类型,通过事件类型的判断, //我们可以知道当前节点是什么节点,从而确定我们应该做什么操作 int type = xp.getEventType(); Message msg = null; while(type != XmlPullParser.END_DOCUMENT){ //根据节点的类型,要做不同的操作 switch (type) { case XmlPullParser.START_TAG: // 获取当前节点的名字 if("message".equals(xp.getName())){ //创建msg集合对象,用于存放msg的javabean cityList = new ArrayList<Message>(); } else if("sms".equals(xp.getName())){ //创建msg的javabean对象 msg = new Message(); } else if("body".equals(xp.getName())){ // 获取当前节点的下一个节点的文本 String body = xp.nextText(); msg.setName(body); } else if("date".equals(xp.getName())){ // 获取当前节点的下一个节点的文本 String date = xp.nextText(); msg.setTemp(date); } else if("type".equals(xp.getName())){ // 获取当前节点的下一个节点的文本 String type = xp.nextText(); msg.setPm(type); }else if("address".equals(xp.getName())){ // 获取当前节点的下一个节点的文本 String address = xp.nextText(); msg.setPm(address); } break; case XmlPullParser.END_TAG: if("msg".equals(xp.getName())){ //把city的javabean放入集合中 cityList.add(msg); } break; } //把指针移动到下一个节点,并返回该节点的事件类型 type = xp.next(); } for (City c : cityList) { System.out.println(c.toString()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
相关文章推荐
- 正式开启Android之旅
- Android 各种类型的对话框教程详解
- Android:RecyclerView视图,item之间分割线的极简单实现
- 在Android中查看和管理sqlite数据库及产生的-journal同名数据库
- Android学习(23) -- 数据存储之xml序列化器保存数据
- Android(一)----快速入门
- [android] 数据的异步加载和图片保存
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
- Android系统内置第三方输入法
- android下netperf测试网卡网速能力
- 4.1Android进程启动原理分析----Zygote
- Android学习(22) -- 数据存储之使用xml保存数据
- Android系统权限和root权限
- android单元测试
- android按钮点击的四种响应方式
- android:windowSoftInputMode属性
- Android学习笔记3 Activity的生命周期
- Android Fragment使用详解
- [未解决]Android/Java播放正弦波模拟信号时出现噪音
- Android二维码