java还提供SAX和DOM用于解析XML

Android还集成了Pull解析器——推荐

package cn.itcast.service;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import cn.itcast.domain.Person; public class PersonService { /**
* 读取数据
* @param xml
* @return
* @throws Exception
*/
public static List<Person> getPersons(InputStream xml) throws Exception{
List<Person> persons = null;
Person person = null; XmlPullParser pullparser = Xml.newPullParser();
pullparser.setInput(xml, "UTF-8");
int event = pullparser.getEventType(); while (event!=pullparser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
// 数据初始化
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
// 数据read
if ("person".equals(pullparser.getName())){
int id = new Integer(pullparser.getAttributeValue(0));
person = new Person();
person.setId(id);
}
if ("name".equals(pullparser.getName())) {
String name = pullparser.nextText();
person.setName(name);
}
if ("age".equals(pullparser.getName())) {
int age = new Integer(pullparser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(pullparser.getName())){
persons.add(person);
}
break;
default:
break;
}
event = pullparser.next();
}
return persons;
} /**
* 保存数据
* @param persons
* @param out
* @throws Exception
*/
public static void savePersons(List<Person> persons, OutputStream out) throws Exception{
XmlSerializer
serializer = Xml.newSerializer();
serializer.setOutput(out, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for (Person person:persons) {
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId().toString()); serializer.startTag(null, "name");
serializer.text(person.getName().toString());
serializer.endTag(null, "name"); serializer.startTag(null, "age");
serializer.text(person.getAge().toString());
serializer.endTag(null, "age"); serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
out.flush();
out.close(); }
}

//  单元测试

    <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.itcast.xml" /> <application
<uses-library android:name="android.test.runner" />
public class PersonServiceTest extends AndroidTestCase {

    public void testPersons() throws Exception{
InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons = PersonService.getPersons(xml);
for (Person person:persons){
Log.i("test111", person.toString());
}
} public void testSave() throws Exception{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(10, "10", 10));
persons.add(new Person(20, "20", 20)); File xml = new File(getContext().getFilesDir(), "itcast.xml");
FileOutputStream outputStream = new FileOutputStream(xml);
PersonService.savePersons(persons, outputStream);
outputStream.close();
}
}

//  数据结构

package cn.itcast.domain;

public class Person {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Person(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
} public Person() {} }

15_采用Pull解析器解析和生成XML内容的更多相关文章

  1. 安卓使用pull解析器解析XML文件

    学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...

  2. 通过pull解析器操作安卓的xml

    通过pull解析器操作安卓的xml 例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注: =================== ...

  3. JavaScript使用浏览器内置XML解析器解析DOM对象

    所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器.解析器把 XML 转换为 XML DOM 对象 (可通过 JavaScript 操作的对象). 一.获取DOM对象 XMLHttpReq ...

  4. 使用java自带的xml解析器解析xml

    使用java自带的xml解析器解析xml,其实我不推荐,可以用Dom解析,或其他的方式,因为Java自带的解析器使用不但麻烦,且还有bug出现. 它要求,针对不同的xml(结构不同),必须写对应的ha ...

  5. HandlerMethodReturnValueHandler SpringMVC 参数解析 继承关系以及各解析器解析类型

    I HandlerMethodReturnValueHandler (org.springframework.web.method.support) AbstractMessageConverterM ...

  6. HandlerMethodArgumentResolver SpringMVC 参数解析 继承关系以及各解析器解析类型

    HandlerMethodArgumentResolver SpringMVC 参数解析 继承关系以及各解析器解析类型 I HandlerMethodArgumentResolver (org.spr ...

  7. Java DOM解析器 - 解析XML文档

    使用DOM的步骤 以下是在使用DOM解析器解析文档使用的步骤. 导入XML相关的软件包. 创建DocumentBuilder 从文件或流创建一个文档 提取根元素 检查属性 检查子元素 导入XML相关的 ...

  8. 黎活明8天快速掌握android视频教程--15_采用Pull解析器解析和生成XML内容

    1.该项目主要有下面的两个作用 (1)将xml文件解析成对象的List对象,xml文件可以来自手机本地,也可以来自服务器返回的xml数据 (2)强list对象保存成xml文件,xml保存到手机的内存卡 ...

  9. 用PULL解析器解析XML文件

    第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...

随机推荐

  1. 圆形DIV

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  2. HBAO

    nv算是坑死我了,之前下的hbao的sample这次怎么都找不到 http://developer.download.nvidia.com/SDK/10.5/direct3d/samples.html ...

  3. 4-Highcharts曲线图之时间轴折线图

    鼠标按住左键 左右移动可以试试<!DOCTYPE> <html lang='en'> <head> <title>4-Highcharts曲线图之时间轴 ...

  4. apple wwdc resource

    1. every wwdc topic list http://asciiwwdc.com 2. wwdc video直接查看apple develop-> video 3. wwdc open ...

  5. web之困:现代web应用安全指南

    <web之困:现代web应用安全指南>在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客.国际一流 ...

  6. Linux常用命令大全(转载)

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  7. spring security 构造函数初始化bean思路

    采用有参数的构造方法来解决注入你要的属性例如:public MyInvocationSecurityMetadataSource(RoleService roleService) { this.rol ...

  8. NodeJS异常处理uncaughtException篇

    很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段. 和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常: thro ...

  9. ACE 1.1.9 发布,开源云端代码编辑器

    点这里 ACE 1.1.9 发布,开源云端代码编辑器 oschina 发布于: 2015年04月06日 (1评) 分享到:    收藏 +25 4月18日 武汉 源创会开始报名,送华为开发板 ACE ...

  10. App自适应

    http://blog.csdn.net/newjueqi/article/details/42779221