android pull解析复杂xml,Android pull解析xml的实现方法

本文详细介绍了如何在Android中使用XML Pull解析器读取XML文件。通过创建JavaBean类`Person`,从XML资源文件`persons.xml`中解析并存储数据,然后在`MainActivity`中实现点击事件读取XML文件,并将解析结果展示在TextView上。涉及到的关键技术包括XMLPullParser的使用、文件操作和数据绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android pull解析xml的实现方法

资源文件:

persons.xml

jame

18

Tom

20

Jack

16

Rose

26

activity布局文件

activity_main.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="${relativePackage}.${activityClass}" >

android:id="@+id/tv_content"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

android:id="@+id/bt_read"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="读取xml文件" />

javaBean:

public class Person {

private int id;

private String name;

private int age;

public Person() {

super();

}

public Person(int id, String name, int age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

}

主activity:

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.app.Activity;

import android.os.Bundle;

import android.os.Environment;

import android.util.Xml;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

private TextView tv_content;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv_content = (TextView) findViewById(R.id.tv_content);

findViewById(R.id.bt_read).setOnClickListener(this);

}

@Override

public void onClick(View v) {

try {

if (Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

List persons = new ArrayList();

Person person = null;

File sd_file = Environment.getExternalStorageDirectory();

File file = new File(sd_file, "persons.xml");

InputStream inputStream = new FileInputStream(file);

// 获取xml Pull解析器

XmlPullParser pullParser = Xml.newPullParser();

// 解析文件

pullParser.setInput(inputStream, "utf-8");

// 得到事件类型(START_DOCUMENT,END_DOCUMENT,START_TAG, END_TAG, TEXT,

// etc)

int eventType = pullParser.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {

switch (eventType) {

case XmlPullParser.START_TAG:

// 获取标签的名称

String tag_name = pullParser.getName();

if ("person".equals(tag_name)) {

person = new Person();

persons.add(person);

// String value = pullParser.getAttributeValue(null,

// "id");

String value = pullParser.getAttributeValue(0);

person.setId(Integer.parseInt(value));

} else if ("name".equals(tag_name)) {

// pullParser.next();

// String text = pullParser.getText();

String text = pullParser.nextText();

person.setName(text);

} else if ("age".equals(tag_name)) {

// pullParser.next();

// String text = pullParser.getText();

String text = pullParser.nextText();

person.setAge(Integer.parseInt(text));

}

break;

default:

break;

}

eventType = pullParser.next();

}

tv_content.setText(persons.toString());

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值