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

  1. android解析xml文件的方式

    android解析xml文件的方式   作者:东子哥 ,发布于2012-11-26,来源:博客园   在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xm ...

  2. Xml解析之PULL解析 例1

    <?xml version="1.0" encoding="UTF-8"?> <persons> <person id=" ...

  3. JAVA解析XML之SAX方式

    JAVA解析XML之SAX方式 SAX解析xml步骤 通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 通过SAXParse ...

  4. JAVA解析XML之DOM方式

    JAVA解析XML之DOM方式 准备工作 创建DocumentBuilderFactory对象;    创建DocumentBuilder对象; 通过DocumentBuilder对象的parse方法 ...

  5. Java解析XML文件的方式

    在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...

  6. Android:XML简介 & 解析方式对比(DOM、SAX、PULL)

    目录   示意图 1. 定义 XML,即 extensible Markup Language ,是一种数据标记语言 & 传输格式 2. 作用 对数据进行标记(结构化数据).存储 & ...

  7. Android 下用 Pull 解析和生成 XML

    Java 中是可以用 SAX 和 DOM 解析 XML  的,虽然在 Android 下也可以用这2中方式,但是还是推荐用 Pull.Pull 使用简单,效率相对高,Android 下是集成了 Pul ...

  8. android解析xml (pull)

    1. xml <persons> <person id="18"> <name>furong</name> <age>2 ...

  9. Android 生成和Pull解析xml

    一.单个对象生成xml 生成以下xml,该怎么生成呢? <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <accou ...

随机推荐

  1. BZOJ 2097 [Usaco2010 Dec]Exercise 奶牛健美操

    [题意] 给出一棵树.现在可以在树中删去m条边,使它变成m+1棵树.要求最小化树的直径的最大值. [题解] 二分答案.$Check$的时候用$DP$,记录当前节点每个儿子的直径$v[i]$,如果$v[ ...

  2. 5.2.2 re模块方法与正则表达式对象

    Python标准库re提供了正则表达式操作所需要的功能,既可以直接使用re模块中的方法,来实现,也可以把模式编译成正则表达式对象再使用. 方法 功能说明 complie(pattern[,flagss ...

  3. 垂直相邻margin合并解决方法

    块级元素的垂直相邻外边距会合并,水平边距永远不会重合. 行内元素实际上不占上下外边距,左右外边距也不会合并.浮动元素的外边距也不会合并. 外边距重叠的意义 外边距的重叠只产生在普通流文档的上下外边距之 ...

  4. Girls Love 233

    Girls Love 233 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) P ...

  5. 混合了RBAC和ACL的权限系统(二) -- 基于RBAC的系统权限

    http://fightplane.iteye.com/blog/1278464 1. 概念说明 A 系统级权限:从角色的角度出发,不特定于任何实际的资源的权限.比如“用户是否可以修改标题”这个权限, ...

  6. MySQL的limit用法及优化(转)

    常规用法: 用法一: OFFSET ; 比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取. 用法二: ,; 而这个SQL,limit后面是从第2条开始读,读取1条信息 ...

  7. webpack教程——css的加载

    首先要安装css的loader npm install css-loader style-loader --save-dev 然后在webpack.config.js中配置如下代码 意思是先用css- ...

  8. HTML5:去除IE10中输入框和密码框的X按钮和小眼睛

    在IE10和之后的IE版本中,当在输入框和密码框中输入的时候,后面会自动出现X按钮和小眼睛,如下图所示:  令人苦恼的是,这个效果只有IE才有,其它浏览器是没有这个功能的.为了统一,我们就需要去掉这个 ...

  9. java调用百度地图API依据地理位置中文获取经纬度

    百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的开发,百度地图api首页:http://developer.baidu.com/map/. 博主使用过依据地理依据地理位置中文获取经纬 ...

  10. Oracle批量恢复drop操作删除的表、索引等对象

    /**********************************************************************查询Drop操作删除的对象select * from re ...