参考:http://blog.csdn.net/pi9nc/article/details/9320413

XML文件的解析,代码:

 public void click(View v) {
InputStream is = getClassLoader().getResourceAsStream("weather.xml");
//获取到XMLPullParse接口的对象
XmlPullParser xpp = Xml.newPullParser();
try {
//设置输出流及编码
xpp.setInput(is, "utf-8");
//获取到节点的类型,START_DOCUMENT=0,END_DOCUMENT=1,START_TAG=2,END_TAG=3,TEXT=4
int type = xpp.getEventType();
CityBean city = null;
//当前节点不是END_DOCUMENT的话,就一直循环遍历XML文件
while (type!=XmlPullParser.END_DOCUMENT) {
//使用switch判断type类型
switch (type) {
//type为2的情况下,进入START_TAG
case XmlPullParser.START_TAG:
//获取当前节点的名字是weather
if ("weather".equals(xpp.getName())) {
//city的集合
cityList=new ArrayList<>();
}else if ("city".equals(xpp.getName())) {
city = new CityBean();
}else if ("name".equals(xpp.getName())) {
String name = xpp.nextText();
city.setName(name);
}else if ("temp".equals(xpp.getName())) {
String temp = xpp.nextText();
city.setTemp(temp);
}else if ("pm".equals(xpp.getName())) {
String pm = xpp.nextText();
city.setPm(pm);
}
break;
case XmlPullParser.END_TAG:
if ("city".equals(xpp.getName())) {
cityList.add(city);
}
break;
default:
break;
}
//把解析的指针移动到下一个节点
type=xpp.next();
}
for (CityBean c1 : cityList) {
System.out.println(c1.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}

XML文件的创建,代码:

 File file = new File(Environment.getExternalStorageDirectory(),"info3.xml");
XmlSerializer xml = Xml.newSerializer();
try {
FileOutputStream fos = new FileOutputStream(file);
xml.setOutput(fos, "utf-8");
xml.startDocument("utf-8", true);
xml.startTag(null, "message");
for (SmsBean smsBean : smsList) {
xml.startTag(null, "sms");
xml.startTag(null, "body");
xml.text(smsBean.getBody());
xml.endTag(null, "body");
xml.startTag(null, "address");
xml.text(smsBean.getAddress());
xml.endTag(null, "address");
xml.startTag(null, "date");
xml.text(smsBean.getDate());
xml.endTag(null, "date");
xml.startTag(null, "type");
xml.text(smsBean.getType());
xml.endTag(null, "type");
xml.endTag(null, "sms");
}
xml.endTag(null, "message");
xml.endDocument();
fos.close();
} catch (Exception e) { e.printStackTrace();
}

Android开发之XML的创建和解析的更多相关文章

  1. [置顶] Android开发之XML文件的解析

    Android系统开发之XML文件的解析 我们知道Http在网络传输中的数据组织方式有三种分别为:XML方式.HTML方式.JSON方式.其中XML为可扩展标记语言,如下: <?xml vers ...

  2. Android开发之Activity的创建跳转及传值

    在Android系统的江湖中有四大组件:活动(Activity), 服务(Service), 广播接收器(Broadcast Reciver)和内容提供者(Content Provider).今天所介 ...

  3. Android开发之JNI(一)--HelloWorld及遇到的错误解析

    Android开发之JNI(一)--HelloWorld及遇到的错误解析 1.NDK环境搭建    參考http://blog.csdn.net/xiaoliouc/article/details/8 ...

  4. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

  5. Android 开发之旅:深入分析布局文件&又是“Hello World!”

    http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...

  6. Android开发之旅4:应用程序基础及组件

    引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用 ...

  7. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  8. [置顶] Android开发之MediaPlayerService服务详解(一)

    前面一节我们分析了Binder通信相关的两个重要类:ProcessState 和 IPCThreadState.ProcessState负责打开Binder 驱动,每个进程只有一个.而 IPCThre ...

  9. android开发之Animations的使用(二)

    android开发之Animations的使用(二) 本博文主要讲述的是android开发中的animation动画效果的使用,和上一篇博文不同的是,此次四种动画效果,主要使用的是xml文件实现的,提 ...

随机推荐

  1. 从零开始学ios开发(六):IOS控件(3),Segmented Control、Switch

    这次的学习还是基于上一个项目继续进行(你也可以新建一个项目)学习Segmented Control和Switch. Segmented Control Switch Segmented Control ...

  2. 将eclipse的应用程序打包成.exe

    转自:http://blog.163.com/loveshijie_1991/blog/static/1760553112012102573437156/ 参考:http://blog.csdn.ne ...

  3. UML 小结(1)- 整体阐述

    前言:              UML( Unified Modeling Language) 又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形 ...

  4. 回溯(su)算法之N皇后问题

    这里回溯算法还要好好研究一下 试探一个位置是否有效,如果有效,试探下一个位置(DFS),如果无效则回退 1.定义一个解空间,存放一个解的空间 2.DFS(暂且认为是DFS) 这里N皇后用的是递归+回溯 ...

  5. Asp.Net生命周期系列五

    如果您看了我的前四篇文章,应该知道目前Http请求已经流到了HttpModule这个程序员手中了,而且我们可以注册自己的HttpModule并且可以在里面注册一些事件来控制这个Http请求,但是到目前 ...

  6. jquery ajax超时设置

    var ajaxTimeoutTest = $.ajax({ url:'',  //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : 'get',  //请求方式 ...

  7. bnuoj 33647 Angry Grammar Nazi(字符串)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=33647 [题意]:字符串匹配,暴力配就行了 [题解]:截出单词,然后进行匹配就行了 [code]: ...

  8. matlab字符串操作总结

    matlab字符串操作总结 字符串操作总结 char(S1,S2,…)利用给定的字符串或单元数组创建字符数组double(S)将字符串转化成ASC码形式cellstr(S)利用的给定的字符数组创建字符 ...

  9. window.open被IE拦截的解决办法

    由于在使用window.open时,在很多情况下,弹出的窗口会被浏览器阻止,但若是使用a链接target='_blank',则不会,基于这一特点,自己封装了一个open方法: function ope ...

  10. 使用函数的递归调用来解决Hanoi(汉诺)塔问题。

    #include<stdio.h> void hanoi(int n, char x, char y, char z); void move(char x, char y); int ti ...