Android中Pull解析器解析xml文件案例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android中Pull解析器解析xml文件案例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3633字,纯文字阅读大概需要6分钟。
内容图文
首先
准备一个供解析的xml文件,这里我们假定要解析的文件名称为person.xml,文件的具体内容为:
<?xml version="1.0" encoding="utf-8"?>
<persons>
<personid="23">
<name>liming</name><age>23</age></person></persons>
接下来写一个person的JavaBean:
package com.yangzi.domain;
publicclassPerson {privateint id;
private String name;
privateint age;
publicintgetId() {
return id;
}
publicvoidsetId(int id) {
this.id = id;
}
public String getName() {
return name;
}
publicvoidsetName(String name) {
this.name = name;
}
publicintgetAge() {
return age;
}
publicvoidsetAge(int age) {
this.age = age;
}
@Overridepublic String toString() {
return"Person [, name=" + name + ", age=" + age + "]";
}
}
然后
是业务类的编写:
package com.yangzi.service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import com.yangzi.domain.Person;
publicclassPersonService {publicstatic List<Person> getPersons(InputStream xml) throws Exception {
List<Person> persons = null;
Person person = null;
//得到xmlpull解析器
XmlPullParser pullParser = Xml.newPullParser();
//設置解析器要解析的内容,和编码方式
pullParser.setInput(xml,"utf-8");
//循环读取xml文件的节点int event = pullParser.getEventType();//得到xml文件中的一个节点while(event != XmlPullParser.END_DOCUMENT){
switch (event) {
//xml文件开始节点,开始节点一般做数据的初始化case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
//若为开始节点case XmlPullParser.START_TAG:
//若为person节点if("person".equals(pullParser.getName())){
//得到id
person = new Person();
//int id = Integer.parseInt(pullParser.getAttributeValue(0));//int id = new Integer(pullParser.getAttributeValue(0));int id = Integer.valueOf(pullParser.getAttributeValue(0));
person.setId(id);
}
//若为名字节点if("name".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(name);
}
//若为年龄节点if("age".equals(pullParser.getName())){
//int age = Integer.parseInt(pullParser.nextText());//int age = new Integer(pullParser.nextText());int age = Integer.valueOf(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullParser.next();//读取下一个节点
}
return persons;
}
}
接下来
就可以写测试类对其进行测试了:
package com.yangzi.test;
import java.io.InputStream;
import java.util.List;
import android.test.AndroidTestCase;
import android.util.Log;
import com.yangzi.domain.Person;
import com.yangzi.service.PersonService;
publicclassPersonServiceTestextendsAndroidTestCase {privatestaticfinal String TAG = "PersonServiceTest";
publicvoidtestPersons() throws Exception{
InputStream in = this.getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = PersonService.getPersons(in);
for(Person per:persons){
Log.i(TAG, per.toString());
}
}
}
在测试之前
要在项目清单文件中引入测试环境:
<manifestxmlns:android="http://schemas.android.com/apk/res/android">
<application>
.....
<uses-libraryandroid:name="android.test.runner" /><!--注意放置的位置-->
....
</application>
....
<instrumentation
android:name="android.test.InstrumentationTestRunner"android:targetPackage="com.yangzi.xml" /><!--注意放置的位置--></manifest>
ok,点击testPersons方法,运行为Android Junit Test试试吧!
体会
根据业务类PersonService 的分析代码,可以看出,在xml文件中的并没有进行操作,可以任意命名,也就是说,在解析xml文件时可以直接提取自己想要的就行了,其他的不用操作。
自己的想法,不知道对否,请大神指正啊!
原文:http://blog.csdn.net/u012437355/article/details/45722555
内容总结
以上是互联网集市为您收集整理的Android中Pull解析器解析xml文件案例全部内容,希望文章能够帮你解决Android中Pull解析器解析xml文件案例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。