Android中生成xml文件

xml可以用来备份文件数据

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();

}

}

}

时间: 2024-11-08 09:18:18

Android中生成xml文件的相关文章

android 中生成xml文件

在Android中生成xml文件真的很简单,下面提供2中方法,一种是通过String写入到文件,另外一种是通过XML 的 XmlSerializer. 以后遇到Android写xml内容就不会困惑了 1.通过string写入文件 String name=mEtName.getText().toString(); String age=mEtAge.getText().toString(); String Id=mEtID.getText().toString(); File file=new F

解决Android中fragment_main.xml文件中的组件获取的问题

package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.Me

Android中layout.xml文件中加载自定义的View类

<com.bn.summer.GGView3 android:layout_width="100dip" android:layout_height="114dip" android:layout_marginLeft="11dip" /> View类的实现: package com.bn.summer; import android.content.Context; import android.content.res.Resour

修改Android中strings.xml文件, 动态改变数据

有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法.strings.xml中节点是支持占位符的,如下所示: <string name="data">整数型:%1$d,浮点型:%2$.2f,字符串:%3$s</string> 其中%后面是占位符的位置,从1开始, $ 后面是填充数据的类型         %d:表示整数型:         %f :表示浮点型,其中f前面的.2 表示小数的位数         %

【转】android中string.xml文件的使用

1.在程序中获取string.xml中字符串和数值 <?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MainActivity!</string>    <string name="app_name">TestExample01</stri

从数据库中生成XML文件

前台页面<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

[转]Android中attrs.xml文件的使用详解

转自:http://blog.csdn.net/jiangwei0910410003/article/details/17006087 Android中在values中定义一个attrs.xml,然后自己定义一个组件MyView attrs.xml内容如下: [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleabl

Android之旅十四 android中的xml文件解析

在我们做有关android项目的时候,肯定会涉及到对xml文件的解析操作.以下给大家介绍一下xml文件的解析.包括DOM.SAX.Pull以及曾经我们用到的DOM4J和JDOM: 要解析的XML文件:person.xml <? xml version="1.0" encoding="UTF-8"? > <persons> <person id="001"> <name>zhangsan</na

android中在xml文件中使用View在某个控件的上方画一条线;android:listSelector的属性说明;android:visibility=&quot;gone&quot;

一.例如RelativeLayout中android:visibility="gone" 其有三个属性:visible显示:invisible显示黑背景条:gone不显示 在类中,可以设置其显示与否,setVisibility(View.GONE);不显示 setVisibility(View.VISIBLE);显示 二. android:listSelector的属性说明 <GridView android:id="@+id/gridview_numberkeyboa