XMLPuLL解析

1 package com.bawei.day14_xmlpull;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.ArrayList;
6 import java.util.List;
7
8 import org.xmlpull.v1.XmlPullParser;
9 import org.xmlpull.v1.XmlPullParserException;
10
11 import android.os.Bundle;
12 import android.app.Activity;
13 import android.util.Xml;
14 import android.view.Menu;
15 import android.widget.ArrayAdapter;
16 import android.widget.ListView;
17 import android.widget.TextView;
18
19 public class MainActivity extends Activity {
20
21 private ListView mStuListView;
22 private List<Student> stus;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.activity_main);
28 TextView tv=(TextView) findViewById(R.id.tv);
29 mStuListView = (ListView) findViewById(R.id.stuList);
30 try {
//调用方法
31 parseStudent(getAssets().open("persons.xml"));
32 if (stus != null && stus.size() > 0) {
33 ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this, android.R.layout.simple_list_item_1, stus);
34 mStuListView.setAdapter(adapter);
35 }
36
37 } catch (IOException e) {
38 // TODO Auto-generated catch block
39 e.printStackTrace();
40 }
41
42 }
43
44 private List<Student> parseStudent(InputStream is) {
45 stus = new ArrayList<Student>();
//创建pull解析器
46 XmlPullParser parser = Xml.newPullParser();
47 try {
//把需要解析的数据添加到解析器中,并设置数据格式
48 parser.setInput(is, "utf-8");
//通过解析器触发第一次事件,并获取事件类型码
49 int eventType = parser.getEventType();
50 //定义用来存储标签名称的变量
51 String tagName = "";
52 Student stu = null;
//判断是否解析到文档末尾,没有则循环解析
53 while (eventType != XmlPullParser.END_DOCUMENT) {
54 switch (eventType) {
//开始解析文档
55 case XmlPullParser.START_DOCUMENT:
56 break;
//开始解析标签
57 case XmlPullParser.START_TAG:
//得到标签名字
58 tagName = parser.getName();
//判断正在接戏的元素标签是否是person
59 if ("person".equals(tagName)) {
60 stu = new Student();
61 stu.setId(Integer.valueOf(parser.getAttributeValue(0)));
62
63 }
64 break;
//解析到文本
65 case XmlPullParser.TEXT:
//得到当前正在解析的文本内容
66 String text = parser.getText();
67 if (stu != null) {
//判断正在解析的文本内容是哪个元素节点里的
68 if ("name".equals(tagName)) {
69 stu.setName(text);
70 } else if ("age".equals(tagName)) {
71 stu.setAge(Integer.parseInt(text));
72 }
73 }
74 break;
//解析到结束标签
75 case XmlPullParser.END_TAG:
//得到正在解析的元素标签名
76 tagName = parser.getName();
//得到正在解析的元素标签名是否是person
77 if ("person".equals(tagName)) {
78 stus.add(stu);
79 stu = null;
80
81 }
82
83 tagName = "";
84 break;
85
86 } //本次事件处理完毕,进入下一个节点,下一个事件
87 eventType = parser.next();
88 }
89
90 } catch (XmlPullParserException e) {
91 // TODO Auto-generated catch block
92 e.printStackTrace();
93 } catch (IOException e) {
94 // TODO Auto-generated catch block
95 e.printStackTrace();
96 }finally{
97
98 try {
99 if(is!=null){
100 is.close();
101 }
102 } catch (IOException e) {
103 // TODO Auto-generated catch block
104 e.printStackTrace();
105 }
106
107 }
108
109 return stus;
110 }
111
112 }

json解析

import com.google.gson.Gson; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.tv);
try {
InputStream is=getAssets().open("newsList.json");
int length = is.available();
byte[] buffer=new byte[length];
is.read(buffer);
String jsonStr=new String(buffer,0,length);
Gson g=new Gson();
SuperJsonParse sjp=g.fromJson(jsonStr,SuperJsonParse.class);
textView.setText(sjp.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

XMLPuLL解析的更多相关文章
- Android之使用XMLPull解析xml(二)
转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...
- Android--使用XMLPull解析xml
在Android中极力推荐的xmlpull方式解析xml.xmlpull不只能够使用在Android上.相同也适用于javase,但在javase环境下.你须要自己去获取xmlpull所依赖的类库. ...
- HttpEntity转换Inputstream(红色)加XmlPull解析
package com.bawei.xml; import java.io.IOException; import java.io.InputStream; import java.util.Arra ...
- Android中的几种解析XML文件的类
Ø DOM解析 优点: 1.XML树在内存中完整存储,因此可以直接修改其数据和结构. 2.可以通过该解析器随时访问XML树中的任何一个节点. 3.DOM解析器的API在使用上也相对比较简单. 缺点:如 ...
- android 之 XMLPull
Pull解析 Pull的XML解析操作与SAX解析操作类似,也是采用事件驱动的方式.当XML文档开始解析或者遇到节点时都会有相应的事件代码触发. 主要涉及两个类: org.xmlpull.v1.Xml ...
- 通过pull解析器操作安卓的xml
通过pull解析器操作安卓的xml 例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注: =================== ...
- 浅谈 Java Xml 底层解析方式
XML 使用DTD(document type definition)文档类型来标记数据和定义数据,格式统一且跨平台和语言,已成为业界公认的标准. 目前 XML 描述数据龙头老大的地位渐渐受到 Jso ...
- 抱歉最近朋友结婚去浪了几天~未来几天会正常更新.今天带来XML文件解析
三种解析方法 DOM,SAX,XMLPullParse;你以为我要讲三种嘛 错 ,我只讲一种 ,其他两种我只是说下优缺点, 一.DOM解析器 优点: DOM解析器在解析XML文档时,会把文档中的所有元 ...
- 推荐--《Android深入浅出》
基本信息 书名:Android深入浅出 作者:张旸 著 页数: 661 出版社: 机械工业出版社; 第1版 (2014年4月17日) 语种: 简体中文 ASIN: B00JR3P8X0 品牌: 北京华 ...
随机推荐
- 在javascrit中怎样来刷新页面
a页面里iframe了个b页面,我想实现在b页面里一个按钮,一按就刷新a页面,也就是父页面,不是只刷新iframe里面的b页面 哦~ 请问b页面里的<input type="butto ...
- can't resolve symbol 'R' ...
in android studio IDE: 解决: Tools -> Android -> Sync Project with Gradle Files
- 关于java建立的的包import的问题
之前修改classpath后,import自己写的包,用IDEA运行一直不通过,现在还没解决.... 是classpath修改不对,还是IDEA的问题? 哎,没有解决,只是在同一目录下才能用 不再纠结 ...
- 微信小程序 不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html
微信小程序 不在以下合法域名列表中,请参考文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html 友情提示: 大家 ...
- hibernate学习(6)——加载策略(优化)
1. 检索方式 1 立即检索:立即查询,在执行查询语句时,立即查询所有的数据. 2 延迟检索:延迟查询,在执行查询语句之后,在需要时在查询.(懒加载) 2. 检查策略 1 类级别检索:当前的类的 ...
- oauth基本流程和原理
组装loginurl->去第三方登录验证->回调callbackurl+code(票据)->本地根据code+appid+appkey组装url隐式curl获取用户信息->完成 ...
- 如何利用python监控主机存活并邮件、短信通知
功能: 1.使用定时任务执行脚本,检查主机存活信息2.将主机存活信息写入指定文件3.发现宕机的主机后给用户发邮件提醒备注:因为139邮箱在接受到邮件后会自动给用户发送条短信告知(且此服务免费),所以间 ...
- cookie的session_id解释
HTTP协议(http://www.w3.org/Protocols/)是“一次性单向”协议. 服务端不能主动连接客户端,只能被动等待并答复客户端请求.客户端连接服务端,发出一个HTTP Reques ...
- android studio 2.0 GPU Debugger使用说明
GPU Debugger GPU Debugging Tools The GPU debugging tools are an experimental feature intended to hel ...
- 用jsonp格式的数据进行ajax post请求变成get
因为 dataType 是 jsonp 而不是 json jsonp不支持POST跨域,所以会自动转成GET而关于jsonp为什么不支持post请求,百度到的答案是jsonp为动态的script,没有 ...