Android中生成xml文件
来源:互联网 发布:80端口被系统占用 编辑:程序博客网 时间:2024/06/05 20:41
Android中xml的读写
通常把数据封装到对象中,然后通过对象俩操作数据。包名不能使用Android或Java的关键字。
当一个应用被删除时,该应用在内部存储空间内的所有数据都会被删除,而应用在外部存储空间的数据不会被删除。备份文件一般都放在外部存储空间中。
对于xml文件的校验,可以把xml文件放到浏览器中去解析,如果能够正常解析说明xml文件是正确的。
短信备份案例:
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.test.backsms.MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="back"
android:text="备份短信" />
</RelativeLayout>
通过bean封装对象
package com.test.backsms.domain;
public class MessageBean {
//短信的内容
private String body;
//短信接收日期
private String date;
//短信发送的目的地
private String address;
//短信的类型:接收或者是发送
private String type;
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public MessageBean(String body, String date, String address, String type) {
super();
this.body = body;
this.date = date;
this.address = address;
this.type = type;
}
}
package com.test.backsms;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.test.backsms.domain.MessageBean;
public class MainActivity extends Activity {
List<MessageBean> smsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//模拟短信
//创建list对象存储短信
smsList = new ArrayList<MessageBean>();//非常重要,不能忘记
for(int i=0;i<10;i++){
MessageBean mb = new MessageBean("adsfasf", i+"", "13985666565", "1");
System.out.println(mb.getAddress()+mb.getBody()+mb.getDate()+mb.getType());
smsList.add(mb);
}
}
//备份短信
public void back(View v) {
//现在内存中把数据格式拼接出来,然后再写出去
//通过StringBuffer对象拼接
StringBuffer sb = new StringBuffer();
//添加xml声明
sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>");
//添加根节点
sb.append("<message>");
//添加子节点
for (MessageBean sms :smsList) {
sb.append("<sms>");
//添加内容节点
sb.append("<body>");
sb.append(sms.getBody());
sb.append("</body>");
sb.append("<date>");
sb.append(sms.getDate());
sb.append("</date>");
sb.append("<address>");
sb.append(sms.getAddress());
sb.append("</address>");
sb.append("<type>");
sb.append(sms.getType());
sb.append("</type>");
sb.append("</sms>");
}
sb.append("</message>");
String path = "sdcard/sms.xml";
File file = new File(path);
try {
FileOutputStream fos = new FileOutputStream(file);
try {
fos.write(sb.toString().getBytes());
//关流
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
添加写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在Android中,提供了xml序列化器来生成xml文件。在Android中默认的编码格式为utf-8 。xml序列化器会过滤掉没有用到的不完整的标签
package com.test.backsms;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlSerializer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import com.test.backsms.domain.MessageBean;
public class MainActivity extends Activity {
List<MessageBean> smsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//模拟短信
//创建list对象存储短信
smsList = new ArrayList<MessageBean>();//非常重要,不能忘记
for(int i=0;i<10;i++){
MessageBean mb = new MessageBean("adsfasf", i+"", "13985666565", "1");
System.out.println(mb.getAddress()+mb.getBody()+mb.getDate()+mb.getType());
smsList.add(mb);
}
}
//备份短信
public void back(View v) {
//使用序列化器生成xml对象
//1.拿到xml序列化对象
XmlSerializer xs = Xml.newSerializer();
//2.初始化 文件名和路径
String path = "sdcard/sms.xml";
String encoding ="utf-8";
File file = new File(path);
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
try {
//指定用什么编码生成xml文件
xs.setOutput(fos, encoding);
//3.开始生成xml
//指定xml文件申明中encoding的值,true表示yes,文件独立
xs.startDocument(encoding, true);
//生成文件的根节点xs.startTag(namespace, name);
xs.startTag(null, "message");
//生成xml文件的节点
for(MessageBean sms:smsList){
xs.startTag(null, "sms");
xs.startTag(null, "body");
xs.text(sms.getBody());
xs.endTag(null, "body");
xs.startTag(null, "date");
xs.text(sms.getDate());
xs.endTag(null, "date");
xs.startTag(null, "address");
xs.text(sms.getAddress());
xs.endTag(null, "address");
xs.startTag(null, "type");
xs.text(sms.getType());
xs.endTag(null, "type");
xs.endTag(null, "sms");
}
//关闭根节点
xs.endTag(null, "message");
//告诉序列化器xml文件生成结束。
xs.endDocument();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- Android中生成xml文件
- Android 中xml文件的生成
- Android中生成xml文件小demo
- Android 生成 xml文件
- Android生成XML文件
- 在android中使用Pull解析器生成xml文件
- android中xml文件的生成与读取(Pull)
- 黑马Android:生成xml文件
- Android XmlSerializer生成XML文件
- Android中使用Pull解析器生成XML文件和读取xml文件
- Android Xml文件生成,Xml数据格式写入
- Android开发中禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml
- android中XML解析生成
- android中 XML的生成
- Android中生成XML总结
- android中XML文件
- C#中读取xml文件和生成xml文件
- 如何利用Android XmlSerializer生成XML文件
- Cocos2d-x 3.2 异步动态加载
- rvm
- tpl使用foreach
- spring txManager配置
- Tracking-Learning-Detection原理分析
- Android中生成xml文件
- VS转换到 COFF 期间失败 文件无效或损坏
- Codeforces Round #305 (Div. 2)
- iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
- python 网络编程基础学习笔记(1)-网络客户端-socket
- java web项目读取资源文件
- PHP之——PHPExcel 基本用法详解(插曲)
- arcmap中依据属性分割图层工具
- Spring之ORM模块