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解析的更多相关文章

  1. Android之使用XMLPull解析xml(二)

    转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...

  2. Android--使用XMLPull解析xml

    在Android中极力推荐的xmlpull方式解析xml.xmlpull不只能够使用在Android上.相同也适用于javase,但在javase环境下.你须要自己去获取xmlpull所依赖的类库. ...

  3. HttpEntity转换Inputstream(红色)加XmlPull解析

    package com.bawei.xml; import java.io.IOException; import java.io.InputStream; import java.util.Arra ...

  4. Android中的几种解析XML文件的类

    Ø DOM解析 优点: 1.XML树在内存中完整存储,因此可以直接修改其数据和结构. 2.可以通过该解析器随时访问XML树中的任何一个节点. 3.DOM解析器的API在使用上也相对比较简单. 缺点:如 ...

  5. android 之 XMLPull

    Pull解析 Pull的XML解析操作与SAX解析操作类似,也是采用事件驱动的方式.当XML文档开始解析或者遇到节点时都会有相应的事件代码触发. 主要涉及两个类: org.xmlpull.v1.Xml ...

  6. 通过pull解析器操作安卓的xml

    通过pull解析器操作安卓的xml 例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注: =================== ...

  7. 浅谈 Java Xml 底层解析方式

    XML 使用DTD(document type definition)文档类型来标记数据和定义数据,格式统一且跨平台和语言,已成为业界公认的标准. 目前 XML 描述数据龙头老大的地位渐渐受到 Jso ...

  8. 抱歉最近朋友结婚去浪了几天~未来几天会正常更新.今天带来XML文件解析

    三种解析方法 DOM,SAX,XMLPullParse;你以为我要讲三种嘛 错 ,我只讲一种 ,其他两种我只是说下优缺点, 一.DOM解析器 优点: DOM解析器在解析XML文档时,会把文档中的所有元 ...

  9. 推荐--《Android深入浅出》

    基本信息 书名:Android深入浅出 作者:张旸 著 页数: 661 出版社: 机械工业出版社; 第1版 (2014年4月17日) 语种: 简体中文 ASIN: B00JR3P8X0 品牌: 北京华 ...

随机推荐

  1. antlr.collections.AST.getLine()I异常

        antlr.collections.AST.getLine()I异常 Struts+hibernate+spring项目经常遇到问题 因为Struts自带的antlr-2.7.2.jar,比H ...

  2. swift-重写方法和属性、禁止重写

    /*子类可以为继承来的实例方法,类方法,实例属性,或下标提供自己定制的实现.我们把这种行为叫重写. 如果要重写某个特性,你需要在重写定义的前面加上 关键字.这么做,你就表明了你是想提供一个重写 版本, ...

  3. [Maven]初次实践

    都说Maven好,以前一直用ant,这次体验一下. 开始之前,maven给我的印象有2个,一是库依赖管理做得比较好,二是规范了构建编译过程,说白了就是什么目录都规定好了. 好开始安装,解压缩,设置m2 ...

  4. (转)微信小程序破解IDE

    1.IDE下载 微信web开发者工具,本人是用的windows 10 x64系统,用到以下两个版本的IDE安装工具与一个破解工具包: wechat_web_devtools_0.7.0_x64.exe ...

  5. sublime sublimeCodeIntel插件 配置

    安装完成后, 弹出一个说明 页面, 不用 管 .可到了这里就是没有提示信息, 忽略 配置sublimeCodeIntel的config文件,告诉他我们需要javascript的提示. 法一: 通过su ...

  6. 给inpu加背景图,input内容又不能盖着背景图

    问题: 根据需要,给input添加背景图片,又需要点击input及input的这个背景触发事件,但是给input输入内容多时,会覆盖此背景(如下图), 图中,java人员使用插件省市区三级联动,需要i ...

  7. win7 WindowsImageBackup 无法识别

    控制面板\所有控制面板项\备份和还原

  8. 快速学习html、css的经典笔记

    HTML语言剖析 Html简介-目录 全写: HyperText Mark-up Language  译名: 超文本标识语言  简释:一种为普通文件中某些字句加上标示的语言,其目的在于运用标签(tag ...

  9. 【转载】如何破解受保护的excel密码

    [工具] 1.电脑一台(安装有Microsoft Excel) 2.受保护excel一个 [步骤] 1.首先,打开受保护的Excel表格,按"ALT"+"F11" ...

  10. js中的 && 和 ||

    js里面&&和||用法容易绕进去. 总结一下,遵循短路原则. &&就是去找false的选项,||就是去找true的选项. 比如 a&&b 如果 a为fa ...