Android 解析XML文件和生成XML文件
解析XML文件
public static void initXML(Context context) {
//can't create in /data/media/0 because permission
//can create in /sdcard/hotel
File mSettings = new File(HOTEL_PATH_XML);
if (!mSettings.exists()) {
mSettings.mkdirs();
}
File settings = new File(mSettings,"settings.xml");
Log.i("XmlPullParser-----settings", settings+"+1+");
if (!settings.exists()) {
try {
Log.i("XmlPullParser-----settings", settings+"+2+");
settings.createNewFile();
initSettings(settings);
} catch (IOException e) {
e.printStackTrace();
return;
}
return;
} try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new FileInputStream(settings), "utf-8");
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
Log.i("XmlPullParser-----TAG", eventType+"");
if (eventType == XmlPullParser.START_TAG) {
String tag = xpp.getName();
Log.i("XmlPullParser-----TAG", "tag---------"+tag+"");
if (tag.equals("item")) {
String id = xpp.getAttributeValue(null, "id");
String value = xpp.getAttributeValue(null, "value");
if (id.equals("server")) {
sServerAddr = value;
} else if (id.equals("hotel")) {
sHid = value;
} else if (id.equals("room")) {
sRoomNum = value;
}
}
}
eventType = xpp.next();
}
Log.i("XmlPullParser-----TAG", eventType+"exist the xunhuan");
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} }
生成XML文件
//默认是没有换行的
public static void initSettings(final File settings) {
new Thread(new Runnable() { @Override
public void run() {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(settings);
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(fos, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "config");
serializer.startTag(null, "category");
serializer.attribute(null, "name", "hot");
// server
serializer.startTag(null, "item");
serializer.attribute(null, "id", "server");
serializer.attribute(null, "value", "");
serializer.endTag(null, "item");
// hid
serializer.startTag(null, "item");
serializer.attribute(null, "id", "hotel");
serializer.attribute(null, "value", "");
serializer.endTag(null, "item");
// room
serializer.startTag(null, "item");
serializer.attribute(null, "id", "room");
serializer.attribute(null, "value", "");
serializer.endTag(null, "item"); serializer.endTag(null, "category");
serializer.endTag(null, "config");
serializer.endDocument();
serializer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}).start();
}
生成xml文件的时候如果要出现“<”括号,可以使用脚本把被转成<的<,替换回< (不要直接使用路径,通过方法获取路径)
sed -i 's/</</g' /storage/external_storage/sda1/123456.xml
前提是sed命令要在这个Android系统中有效
Android 解析XML文件和生成XML文件的更多相关文章
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- 使用XMl序列化器生成xml文件
生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append(&q ...
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式> &l ...
- Android 自动编译、打包生成apk文件 4 - 多渠道批量打包
相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式 > < ...
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
from://http://blog.csdn.net/androiddevelop/article/details/11100109 相关文章列表: <Android 自动编译.打包生成apk ...
- Android Project from Existing Code 生成 R 文件错误、失败等问题解决办法 - 持续更新
Android Project from Existing Code 生成 R 文件错误.失败等问题解决办法 - 持续更新 git 上的项目,pull下来之后用Android Project fro ...
- Android vcard使用示例,生成vcf文件
Android vcard使用示例,生成vcf文件 我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码. vCard 规范容许公开交换个人数据交换 ( ...
- 利用svn的补丁文件打包生成增量文件
下面的代码是maven版本 1. 创建patch.txt增量文件 保存到 文件目录下 比如 E:\aa\patch.txt 2. 编写java代码 package utils; import java ...
- eclipse上ndk环境的搭建&&so文件的生成&&jni文件的调用
JNI是java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码.JNI 是本地编程接口,Java和C/C++ ...
- bootstrap 中是通过写less文件来生成css文件,用什么工具来编写呢?
bootstrap 中是通过写less文件来生成css文件,用什么工具来编写呢? 如果用sublime的话如何实现代码保存后浏览器刷新成最新的代码样式? 或者有什么其他好用的工具? 从网上找了很多方法 ...
随机推荐
- CSS 3学习——animation动画
以下内容根据官方文档翻译以及自己的理解整理. 1. 介绍 本方案介绍动画(animations).通过动画,开发者可以将CSS属性值的变化指定为一个随时间变化的关键帧(keyframes)的集合.在 ...
- .NET Core的日志[4]:将日志写入EventLog
面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog.EventLog不仅仅记录了Windows系统自身针对各种事件的日志,我们的应用 ...
- TypeScript Vs2013 下提示Can not compile modules unless '--module' flag is provided
VS在开发TypeScript程序时候,如果import了模块有的时候会有如下提示: 这种情况下,只需要对当前TypeScript项目生成设置为AMD规范即可!
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- iOS开发之App间账号共享与SDK封装
上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...
- Android带加减的edittext
看了网上这样自带加减的edittext写得好复杂,还有各种监听事件,我觉得没有必有.于是我自己写了一个. 我这个edittext仅仅限制整数,每次加减1. public class TestEditT ...
- php批量删除
php批量删除可以实现多条或者全部数据一起删除 新建php文件 显示数据库中内容: <table width="100%" border="1" cell ...
- JAVA回调机制解析
一.回调机制概述 回调机制在JAVA代码中一直遇到,但之前不懂其原理,几乎都是绕着走.俗话说做不愿意做的事情叫做突破,故诞生了该文章,算是新年的新气象,新突破! 回调机制是什么?其实回 ...
- 玩转ajax
1.什么是ajax? Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 2.ajax需要什么基础? HTML 用于建立 Web 表单并确定应 ...
- Flexible 弹性盒子模型之CSS flex-shrink 属性
实例 让第二个元素收缩到其他元素的三分之一: 效果预览 div:nth-of-type(2){flex-shrink:3;} 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号. 紧跟在 - ...