xml解析
//xml文件的pull解析
try {
// 1.通过Xml获取一个XmlPullParser对象
XmlPullParser parser = Xml.newPullParser();
//2.设置解析器的初始化参数
File file = new File(getFilesDir(), "xxx.xml");
FileInputStream in = new FileInputStream(file);
parser.setInput(inputStream, "utf-8");
// 3.获取当前xml行的事件类型
int eventType = parser.getEventType();
// 4.判断事件类型是否是文档结束的事件类型
while (eventType != XmlPullParser.END_DOCUMENT) {
// 5.如果不是,循环遍历解析每一行的数据。解析一行后,获取下一行的事件类型
String currentTagName = parser.getName();
// 判断当前行的事件类型是开始标签还是结束标签
switch (eventType) {
case XmlPullParser.START_TAG:
// 开始标签的处理
if ("address".equals(tagName)) {
String address = parser.nextText();
//编写逻辑
} else if ("body".equals(tagName)) {
String body = parser.nextText();
//编写逻辑
}
break;
case XmlPullParser.END_TAG:
// 结束标签的处理
if("sms".equals(parser.getName())){
//编写逻辑
}
break;
default:
break;
}
eventType = parser.next();// 获取下一个节点
}
}
xml序列化
//xml文件的序列化
try {
// 1.得到xml文件的序列化器
XmlSerializer serializer = Xml.newSerializer();
// 2.指定序列化器的一些初始参数
File file = new File(getFilesDir(), "msg.xml");
FileOutputStream out = new FileOutputStream(file);
// 3.写xml文件
serializer.setOutput(out, "utf-8"); // 设置输出流信息
serializer.startDocument("utf-8", true); // 设置头信息
serializer.startTag(null, "root"); // 设置根标签
serializer.startTag(null, "sms");
serializer.attribute(null, name, value) // 写标签属性
serializer.startTag(null, "address"); // 开始标签
serializer.text(address); // 写文本标签
serializer.endTag(null, "address"); // 结束标签
serializer.startTag(null, "body");
serializer.text(body);
serializer.endTag(null, "body");
serializer.startTag(null, "type");
serializer.text(type);
serializer.endTag(null, "type");
serializer.startTag(null, "date");
serializer.text(date);
serializer.endTag(null, "date");
serializer.endTag(null, "sms");
serializer.endTag(null, "root");
serializer.endDocument();
out.close(); //关闭输出流
Toast.makeText(this, "xml序列化成功", 0).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "xml序列化失败", 0).show();
}
网友评论