Android xmlpull 方式解析xml文件

1.新建一个xml文件,放在res/xml目录下

1 <?xml version="1.0" encoding="utf-8"?>
2 <citys>
3     <city count="1400"  name="深圳">广东</city>
4     <city count="1500"  name="广州">广东</city>
5     <city count="1000"  name="武汉">湖北</city>
6 </citys>

2.布局文件代码如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6
 7     <Button
 8         android:id="@+id/btn"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="@string/btnmsg" />
12
13     <EditText
14         android:id="@+id/edit"
15         android:layout_width="fill_parent"
16         android:layout_height="wrap_content" />
17
18 </LinearLayout>

3.后台java解析代码如下:

 1 package ymw.main;
 2
 3 import java.io.IOException;
 4
 5 import org.xmlpull.v1.XmlPullParserException;
 6
 7 import ymw.main.R;
 8
 9 import android.app.Activity;
10 import android.content.res.XmlResourceParser;
11 import android.os.Bundle;
12 import android.view.View;
13 import android.widget.Button;
14 import android.widget.EditText;
15
16 public class XmlResourceParserSampleActivity extends Activity {
17     @Override
18     public void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.main);
21         Button btn = (Button) findViewById(R.id.btn);
22         final EditText edit = (EditText) findViewById(R.id.edit);
23         btn.setOnClickListener(new View.OnClickListener() {
24             @Override
25             public void onClick(View v) {
26                 XmlResourceParser xpr = XmlResourceParserSampleActivity.this
27                         .getResources().getXml(R.xml.myxml);// 找到xml文件
28                 StringBuilder sb = new StringBuilder();
29                 try {
30                     // 循环解析
31                     while (xpr.getEventType() != XmlResourceParser.END_DOCUMENT) {
32                         if (xpr.getEventType() == XmlResourceParser.START_TAG) {
33                             // 获取标签的标签名
34                             String name = xpr.getName();
35                             if (name.equals("city")) {
36                                 sb.append("城市名称:" + xpr.getAttributeValue(1)
37                                         + "\n");
38                                 sb.append("人口:"
39                                         + xpr.getAttributeValue(null, "count")
40                                         + "万\n");
41                                 try {
42                                     sb.append("所属省份:" + xpr.nextText() + "\n\n");
43                                 } catch (IOException e) {
44                                     e.printStackTrace();
45                                 }
46                             }
47                         }
48                         try {
49                             xpr.next();
50                         } catch (IOException e) {
51                             e.printStackTrace();
52                         }
53                     }
54                     edit.setText(sb.toString());
55                 } catch (XmlPullParserException e) {
56                     e.printStackTrace();
57                 }
58             }
59         });
60     }
61
62 }
时间: 2025-01-20 03:35:07

Android xmlpull 方式解析xml文件的相关文章

【Android进阶】解析XML文件之使用DOM解析器

在前面的文章中,介绍了使用SAX解析器对XML文件进行解析,SAX解析器的优点就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析.DOM解析器的优点可能是理解起来比较的直观,当然,每个人对不同的解析方法可能有不同的喜好.但是DOM解析器有个比较大的缺点,就是占用内存比较多,在Android中的XML解析中,还是更推荐其他的解析方式. 下面介绍使用DOM解析器对XML进行解析. 下面是我们需要解析的xml文件 <?xml version="1.0" encodin

SAX方式解析xml文件查看天气

1.SAX方式解析xml文件的步骤: ①创建解析器工厂对象 ②使用当前配置的工厂参数创建SAXParser对象 ③解析xml文件 ④利用DefaultHandler创建事件驱动者 2.对于标签对象进行引用怎么办? ①定义当前解析的标签:private String tagName=null; ②在startElement()方法中赋值tagName:this.tagName=qName; ③在endElement()方法中将tagName赋值为空:this.tagName=null; ④在cha

通过Sax方式解析xml文件

说明:此案例使用的是通过Dom方式解析xml文件这篇文章里的City类和china.xml文件. 1. 因为xml文件有两种格式,一是上面那篇文章里的那种元素节点里只包含属性节点,另一种就是元素节点里包含元素节点和文本节点,于是在china.xml中添加如下代码,以实现两种方式的解析: <city> <cityname>杭州</cityname> <pyName>zhejiang</pyName> <quName>浙江</quN

DOM方式解析xml文件查看天气

1.步骤: ①创建文档解析器的工厂对象 ②得到文档解析器对象 ③获取输入流对象 ④通过解析器的parse方法解析is对象 转换成Document对象 ⑤返回的是文档的根节点 ⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点 ⑦得到具体的某个属性节点 2.解析元素节点.属性节点.文本节点: 3.界面搭建 界面搭建的相关代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android 通过pull解析xml文件

1 package com.example.xmldemo.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStreamReader; 9 import java.

通过Dom方式解析xml文件

此项目通过简单的天气情况显示来实现xml文件的解析 1. 搭建环境 1)创建如下图的包.类及文件 2)布局文件的大概样式如下图所示,用到四个TextView控件和一个RadioGroup控件 3)china.xml文件的内容如下 <?xml version="1.0" encoding="UTF-8"?> <china dn="day"> <city cityname="南京" pyName=&q

在iOS 开发中用GDataXML(DOM方式)解析xml文件

因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我们需要做如下配置: 当配置玩这个操作之后,再次进行编译的时候,系统还是报错,是因为我们还需要进行如下操作:

通过Pull方式解析xml文件

说明:此案例使用的是通过Sax方式解析xml文件这篇文章里的布局文件.City类和china.xml文件(此文件内包含两种格式),所以只需要完成MainActivity和PullXml就行了,在于展示如何使用Pull方式解析xml文件. 1. PullXml类的主要代码如下: <span style="font-size:14px;">public class PullXml { public List<City> pullXml() { List<Cit

Android中使用PULL方式解析XML文件

Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理.当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值. 下面我们通过Demo例子来介绍如何使用PULL机制来解析XML文件.先看下如下工程的目录结构: 按以下步骤进行操作: [1]