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();
}
} }

最新文章

  1. Sass学习笔记之入门篇
  2. Sqoop 结合多种系统的具体应用
  3. centos安装PHP服务器步骤
  4. win7 64 位 tomcat 定时重启脚本
  5. Android中使用AlarmManager进程被删除的解决办法
  6. Wireshark分析非标准端口号流量
  7. SAE J2534 Pass-Thru API
  8. 图的强连通&amp;双连通
  9. 如何用angularjs制作一个完整的表格之二__表格分页功能
  10. JS控制菜单样式切换
  11. Java 中字符串的子串搜索
  12. asp.net mvc4设置area里面使用相同的 Controller 名称并设置area里的页面为起始页
  13. 常用的Arrays类和二维数组以及二分法的介绍
  14. 敏捷开发——User Story
  15. java中,字符串类型的时间数据怎样转换成date类型。
  16. hive 压缩 差不多出来数据 各种压缩 数据格式
  17. JS高级-异步
  18. 项目目前展示图 有几个Activity页还没连上不能一次展示出来
  19. bzoj3412
  20. Ryuji doesn&#39;t want to study 2018 徐州赛区网络预赛

热门文章

  1. FK JavaScript之:ArcGIS JavaScript API之地图动画
  2. Swift微博编写感
  3. 多边形碰撞 -- SAT方法
  4. Android中的适配方式
  5. Unity中使用WebView
  6. Elasticsearch问题总结
  7. Ehcache Demo
  8. net面试题
  9. LeetCode Logger Rate Limiter
  10. Android JavaMail