1.首先在SD卡上新建一个测试文件夹
// 获取保存路径
public File getFilePath() {
File filePath = null;
//判断SD卡存在与否
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
filePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/A_Test/test/");
if (!filePath.isDirectory()) {//判断文件存在与否,不存在就创建
filePath.mkdirs();
}
} else {
Toast.makeText(Main.this, "存储卡不存在,请插入卡!", 3000).show();
}
return filePath;
}
注意:权限的添加:
<!-- SD卡写入 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
2.生成一个测试的XML文件
File file = new File(getFilePath() + "/test.xml");
if (!file.exists()) {// 如果文件不存在,就创建新文件
System.out.println("文件不存在,马上创建!");
List<PersonModel> personModel = new ArrayList<PersonModel>();
personModel.add(new PersonModel(1001, "张三", (short) 30));
personModel.add(new PersonModel(1002, "李四", (short) 18));
personModel.add(new PersonModel(1003, "王二", (short) 21));
CreateXML.createXML(file, personModel);
}
/**
* 生成XML文件
*
* @author lilin
* @date 2011-9-26 上午08:36:08
* @ClassName: CreateXML
* @Description: TODO
*/
public class CreateXML {
// 生成XML文件
public static void createXML(File file, List<PersonModel> personModel)
throws IllegalArgumentException, IllegalStateException, IOException {
FileOutputStream outputStream = null;
OutputStreamWriter writer = null;
outputStream = new FileOutputStream(file);
writer = new OutputStreamWriter(outputStream, "UTF-8");
BufferedWriter writer2 = new BufferedWriter(writer);// 增加的缓存功能
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(writer2);
serializer.setOutput(outputStream, "utf-8");
serializer.startDocument("utf-8", true);
serializer.startTag(null, "persons");
for (PersonModel persons : personModel) {
serializer.startTag(null, "person");
serializer.attribute(null, "id", persons.getId().toString());
serializer.startTag(null, "name");
serializer.text(persons.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(persons.getAge().toString());
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
outputStream.close();
}
}
3.解析XML
FileInputStream fileInputStream = new FileInputStream(file);
List<PersonModel> personModel = PullXML.pullXML(fileInputStream);
for (int i = 0; i < personModel.size(); i++) {
System.out.println(personModel.get(i).getId() + "--"
+ personModel.get(i).getName() + "--"
+ personModel.get(i).getAge());
}
/**
* 解析XML
*
* @author lilin
* @date 2011-9-26 上午09:23:37
* @ClassName: PullXML
* @Description: TODO
*/
public class PullXML {
public static List<PersonModel> pullXML(InputStream inStream)
throws Throwable {
List<PersonModel> persons = null;
PersonModel person = null;
/* 声明XML的pull解析器 */
XmlPullParser parser = Xml.newPullParser();
/* 声明编码方式 */
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();// 产生第一个事件
while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件
switch (eventType) {
case XmlPullParser.START_DOCUMENT:// 0 文档开始事件
persons = new ArrayList<PersonModel>();
break;
case XmlPullParser.START_TAG:// 2 开始元素
String name = parser.getName();// 获取解析器当前指向的元素的名称
if ("person".equals(name)) {
person = new PersonModel();
person.setId(new Integer(parser.getAttributeValue(0)));
}
if (person != null) {
if ("name".equals(name)) {
person.setName(parser.nextText());// 获取解析器当前指向元素的下一个文本节点的值
}
if ("age".equals(name)) {
person.setAge(new Short(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(parser.getName())) {
persons.add(person);
person = null;
}
break;
}
eventType = parser.next();
}
return persons;
}
}
分享到:
相关推荐
android xml pull解析示例,自己mark下,备忘
在Android中,使用SAX和PULL解析XML,本项目中以解析天气预报为例。 详情见博客:http://blog.csdn.net/yalin18/article/details/7437752
pull解析xml文件
pull解析xml的详解,简单,便捷,解析各种复杂的xml格式
使用pull解析xml 模板已经写好 只需导入即可用,将里面的解析类导入到其他工程也可用,不必麻烦在写了
最基本最简答的,也是最实用的xml解析,使用pull解析方法,包含本地和网上两种,本地可直接运行,网上的需要修改url地址,欢迎大家
Android网络编程之Pull解析XML文件~
本人实现的基于Pull解析器的XML解析生成工具类,将XML文件转换成对象,将对象转换成XML文件并保存,全部通用,不需要与任何对象进行关联
android pull解析 创建xmlw文件,完整工程项目,可直接运行
pull解析和生成xml文件,使用pull解析本地的xml文件,并且生成了一个不同格式的新的xml文件
Android中采用Pull解析器读取和生成xml内容案例...
利用android中自带的pull解析器解析和生成xml片段。
android项目的一个pull解析的小DEMO
在android平台下使用PULL解析XML源码。
pull解析包用于java解析xml文件时所需要的支持库
使用Android自带的XML解析器PULL解析器简单的解析xml,并将内容显示在TestView上,代码简化过。
分别实现了android 最常用的SAX和PULL解析方式,并附有详尽分析
android开发例子-----pull解析xml天气信息
google天气预报XML-Pull解析版(完全解析)
分享一个pull解析器,解析xml的利器,快来看看吧,很实用的解析器