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 品牌: 北京华 ...
随机推荐
- dblink嵌套场景下 查询出现:ORACLE ORA-00600错误的解决
前段时间在做oracle查询的时候遇到了一个非常奇怪的现象,现将现象和解决过程记录下来,以备查看: 环境描述:A数据库通过dblink访问B数据库的视图,B数据库的视图的数据是通过B的dblink连接 ...
- Android-简单拨号器案例
Android [19]简单电话拨号器 @方法步骤 1.新建一个android程序,项目名设置为 phone ,然后打开 phone->res->layout->activity ...
- 安卓中級教程(4):ScrollView與ListView之間的高度問題
在scrollView中加插ListView是一個大難題.其中一個難題是Listview的高度難以計算,輸出效果往往強差人意,就讓我們看看當中的問題 . <LinearLayout xmlns: ...
- android删除无用资源文件的python脚本
随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ...
- eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN
eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...
- Yii2中数据过滤方案
1. 将数据赋值给model对象再通过model保存数据到数据库时有两种方法. 1) load()再save(). 这种可以通过$model->setScenario('test_scenari ...
- tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)
今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...
- 转: git复制到非空目录
1. 进入非空目录,假设是 /workdir/proj1 2. git clone --no-checkout https://domain_or_ip/source.git tmp 3. mv tm ...
- PHP底层工作原理
最近搭建服务器,突然感觉lamp之间到底是怎么工作的,或者是怎么联系起来?平时只是写程序,重来没有思考过他们之间的工作原理: PHP底层工作原理 图1 php结构 从图上可以看出,php从下到上是一个 ...
- golang DynamoDB sdk AccessDeniedException
golang调用aws sdk时候提示: AccessDeniedException: User: arn:aws:sts::818539432014:assumed-role/bj-develop/ ...