Android 解析XML—pull解析方式
在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器,其中PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器,今天我来介绍一下PULL解析器
首先是在Tomcat服务器上建了一个xml的文档具体如下:

通过访问网络与服务器的交互。
下面是具体的代码:
package com.hb.xml; import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL; import org.xmlpull.v1.XmlPullParser; import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Xml;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity {
protected static final int NUMBER = 0;
protected static final int LOCATION = 1;
protected static final int PHONEJX = 2;
protected static final int NO = 3;
private Button bt_start;
private TextView tv_desc;
private TextView tv_number;
private TextView tv_for;
private String path;
private XmlPullParser xml;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case NUMBER:
tv_number.setText((String)msg.obj);
Toast.makeText(MainActivity.this, "测试成功", 0).show();
break;
case LOCATION:
tv_for.setText((String)msg.obj);
Toast.makeText(MainActivity.this, "测试成功", 0).show();
break;
case PHONEJX:
tv_desc.setText((String)msg.obj);
Toast.makeText(MainActivity.this, "测试成功", 0).show();
break;
case NO:
Toast.makeText(MainActivity.this, "测试失败", 0).show();
break;
}
};
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
} private void initView() {
bt_start=(Button) findViewById(R.id.bt_start);
tv_desc=(TextView) findViewById(R.id.tv_desc);
tv_number=(TextView) findViewById(R.id.tv_number);
tv_for=(TextView) findViewById(R.id.tv_for);
}
public void testtesting(View v){
new Thread(){ public void run() {
try {
URL url = new URL("http://192.168.1.104:8080/test.xml");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(3000);
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
if(code==200){ InputStream is = conn.getInputStream();
xml = Xml.newPullParser();
xml.setInput(is, "gbk");
int type = xml.getEventType();
while (type!=XmlPullParser.END_DOCUMENT) {
if(type == XmlPullParser.START_TAG){
if("phonenum".equals(xml.getName())){
String phonenum=xml.nextText();
Message msg= new Message();
msg.what=NUMBER;
msg.obj=phonenum;
handler.sendMessage(msg);
}else if("location".equals(xml.getName())){
String location=xml.nextText();
Message msg= new Message();
msg.what=LOCATION;
msg.obj=location;
handler.sendMessage(msg);
}else if("phoneJx".equals(xml.getName())){
String desc=xml.nextText();
Message msg= new Message();
msg.what=PHONEJX;
msg.obj=desc;
handler.sendMessage(msg);
}
}else{
//测试失败
}
type=xml.next();
}
}
} catch (Exception e) {
e.printStackTrace();
Message msg= new Message();
msg.what=NO;
handler.sendMessage(msg);
}
};
}.start();
}
}
最后别忘记添加访问网络的权限:
<uses-permission android:name="android.permission.INTERNET"/>
简单的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" > <Button
android:id="@+id/bt_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="testtesting"
android:text="测试" /> <TextView
android:id="@+id/tv_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="内容"
android:textColor="#F4A460" /> <TextView
android:id="@+id/tv_for"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="信息"
android:textColor="#99FF33" />
<TextView
android:id="@+id/tv_desc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="描述"
android:textColor="#EE30A7" /> </LinearLayout>
源码下载地址:http://pan.baidu.com/s/1geBFWLd
Android 解析XML—pull解析方式的更多相关文章
- android解析xml文件的方式
android解析xml文件的方式 作者:东子哥 ,发布于2012-11-26,来源:博客园 在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xm ...
- Xml解析之PULL解析 例1
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id=" ...
- JAVA解析XML之SAX方式
JAVA解析XML之SAX方式 SAX解析xml步骤 通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 通过SAXParse ...
- JAVA解析XML之DOM方式
JAVA解析XML之DOM方式 准备工作 创建DocumentBuilderFactory对象; 创建DocumentBuilder对象; 通过DocumentBuilder对象的parse方法 ...
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...
- Android:XML简介 & 解析方式对比(DOM、SAX、PULL)
目录 示意图 1. 定义 XML,即 extensible Markup Language ,是一种数据标记语言 & 传输格式 2. 作用 对数据进行标记(结构化数据).存储 & ...
- Android 下用 Pull 解析和生成 XML
Java 中是可以用 SAX 和 DOM 解析 XML 的,虽然在 Android 下也可以用这2中方式,但是还是推荐用 Pull.Pull 使用简单,效率相对高,Android 下是集成了 Pul ...
- android解析xml (pull)
1. xml <persons> <person id="18"> <name>furong</name> <age>2 ...
- Android 生成和Pull解析xml
一.单个对象生成xml 生成以下xml,该怎么生成呢? <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <accou ...
随机推荐
- yum更换国内源及yum下载rpm包
一.yum更换国内源 运维开发技术交流群欢迎大家加入一起学习(QQ:722381733) 1.前往yum文件路径地址 [root@web1 ~]# cd /etc/yum.repos.d/ [root ...
- mysql-索引、导入、导出、备份、恢复
1.索引 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行 ...
- 【[Offer收割]编程练习赛12 B】一面砖墙
[题目链接]:http://hihocoder.com/problemset/problem/1494 [题意] [题解] 显然只要记住每一行的各个砖头的间隔处的坐标有多少个就好了: ->也就对 ...
- 洛谷 P1843 奶牛晒衣服
题目背景 熊大妈决定给每个牛宝宝都穿上可爱的婴儿装 . 于是 , 为牛宝宝洗晒衣服就成了很不爽的事情. 题目描述 熊大妈请你帮助完成这个重任 . 洗完衣服后 , 你就要弄干衣服 . 衣服在自然条件下用 ...
- 让我们加密吧Let's encrypt
前言 如今的互联网越来越不安全,我们每个人的信息以及隐私不断被暴露,地下黑产盛行,经常收到垃圾短信,经常被陌生人的电话骚扰.我们的个人信息是怎么泄漏的呢?各种爬虫无时无刻不在互联网爬取着信息,各种嗅探 ...
- Xsolla与蜗牛一起共创黑金
Xsolla和蜗牛游戏强强合作,公布了黑金在线,是中国知名网络游戏武术时代的一个新项目. Xsolla与蜗牛黑金 2014年6月10日至20日,蜗牛的黑金在线首次在美国洛杉矶E3展会上亮相. 该游戏官 ...
- 设计模式实例(Lua)笔记之五(Bridge模式)
1.描写叙述 今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都非常赚钱,天天帮我在累加財富,事实上是什么公司我倒是不关心,我关心的是是不是 ...
- volley基本使用方法
用volley訪问server数据,不用自己额外开线程.以下样例为訪问JSONObject类型的数据,详细使用方法看代码: 首先得有volley的jar包,假设自己没有.去github上下载,然后自己 ...
- Axure RP一个专业的高速原型设计工具
Axure RP是一个专业的高速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司.RP则是Rapid Prototyping(高速原型)的缩写. Axure简要介绍 Axur ...
- double型转换成string型
double型转换成string型 题目描写叙述: 如有一个函数.其可接受一个long double參数,并将參数转换为字符串.结果字符串应保留两位小数,比如,浮点值123.45678应该生成&quo ...