xml文件的生成与解析
生成方法一:同事StringBuffer类对xml文件格式解析写入
package com.steel_rocky.xml; import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener
{ Button back_up = null;
Button restore = null;
private Context mContext; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
back_up = (Button) findViewById(R.id.back_up);
back_up.setOnClickListener(this);
restore = (Button) findViewById(R.id.restore);
restore.setOnClickListener(this); } @Override
public void onClick(View v)
{
int id = v.getId(); switch (id)
{
case R.id.back_up:
if(SmsUtils.backupSms(mContext))
Toast.makeText(mContext, "备份成功", Toast.LENGTH_SHORT).show(); break;
case R.id.restore: break; default:
break;
}
}
}
package com.steel_rocky.xml; import java.io.FileOutputStream;
import java.util.ArrayList; import android.content.Context; public class SmsUtils
{ public static boolean backupSms(Context context)
{ // 获取短信内容 list ArrayList<SmsBean> allSms = SmsDao.getAllSms(); // 封装数据XML格式封装到stringbuffer中 StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone='yes' ?>"); sb.append("<Smss>");
for (SmsBean smsBean : allSms)
{
sb.append("<Sms id = \"" + smsBean.id + "\">");
sb.append("<num>");
sb.append(smsBean.num);
sb.append("</num>");
sb.append("<msg>"); sb.append(smsBean.msg);
sb.append("</msg>");
sb.append("<date>");
sb.append(smsBean.date);
sb.append("</date>");
sb.append("</Sms>");
}
sb.append("</Smss>"); try
{
FileOutputStream fileOutputStream = context.openFileOutput(
"backup.xml", Context.MODE_PRIVATE); fileOutputStream.write(sb.toString().getBytes()); fileOutputStream.close(); return true;
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
} }
package com.steel_rocky.xml; import java.util.ArrayList; public class SmsDao
{ public static ArrayList<SmsBean> getAllSms()
{
ArrayList<SmsBean> arrayList = new ArrayList<SmsBean>();
SmsBean smsBean1 = new SmsBean();
smsBean1.id = 1;
smsBean1.num = "110";
smsBean1.msg = "警局";
smsBean1.date = "2016-12-12";
arrayList.add(smsBean1);
SmsBean smsBean2 = new SmsBean();
smsBean2.id = 1;
smsBean2.num = "120";
smsBean2.msg = "医院";
smsBean2.date = "2016-12-12";
arrayList.add(smsBean2);
SmsBean smsBean3 = new SmsBean();
smsBean3.id = 1;
smsBean3.num = "119";
smsBean3.msg = "消防";
smsBean3.date = "2016-12-12";
arrayList.add(smsBean3); return arrayList; } }
package com.steel_rocky.xml; public class SmsBean
{
public String num;
public String msg;
public String date;
public int id;
}
二、通过AndroidXml类获取xml生成方法写入
package com.steel_rocky.xml; import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener
{ Button back_up = null;
Button restore = null;
private Context mContext; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
back_up = (Button) findViewById(R.id.back_up);
back_up.setOnClickListener(this);
restore = (Button) findViewById(R.id.restore);
restore.setOnClickListener(this); } @Override
public void onClick(View v)
{
int id = v.getId(); switch (id)
{
case R.id.back_up:
if(SmsUtils.backUpAndroid(mContext))
Toast.makeText(mContext, "备份成功", Toast.LENGTH_SHORT).show();
else
Toast.makeText(mContext, "备份失败", Toast.LENGTH_SHORT).show(); break;
case R.id.restore: break; default:
break;
}
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList; import org.xmlpull.v1.XmlSerializer; import android.content.Context;
import android.util.Xml; public class SmsUtils
{ public static boolean backUpAndroid(Context context)
{
try {
//0. 获取短信内容 list ArrayList<SmsBean> allSms = SmsDao.getAllSms();
//1.通过Xml获取一个XmlSerializer对象
XmlSerializer newSerializer = Xml.newSerializer();
//2.设置XmlSerializer的一些参数,比如:设置写入的xml文件的流对象 newSerializer.setOutput(context.openFileOutput("my.xml", Context.MODE_PRIVATE), "utf-8"); //3.序列化xml的声明头
newSerializer.startDocument("utf-8", true); //4.系列化一个根节点的开始节点
newSerializer.startTag(null, "Smss"); //5.循环遍历list集合 for (SmsBean smsBean : allSms)
{
newSerializer.startTag(null, "Sms");
newSerializer.attribute(null, "id", smsBean.id + "");
newSerializer.startTag(null, "num"); newSerializer.text(smsBean.num);
newSerializer.endTag(null, "num");
newSerializer.startTag(null, "msg"); newSerializer.text(smsBean.msg);
newSerializer.endTag(null, "msg");
newSerializer.startTag(null, "date"); newSerializer.text(smsBean.date);
newSerializer.endTag(null, "date"); newSerializer.endTag(null, "Sms");
}
//6.序列化一个根节点的结束节点
newSerializer.endTag(null, "Smss");
//7.将xml写入到文件中,完成xml的序列化
newSerializer.endDocument(); return true; } catch (IllegalArgumentException e)
{
e.printStackTrace();
} catch (IllegalStateException e)
{
e.printStackTrace();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
return false;
}
}
package com.steel_rocky.xml; import java.util.ArrayList; public class SmsDao
{ public static ArrayList<SmsBean> getAllSms()
{
ArrayList<SmsBean> arrayList = new ArrayList<SmsBean>();
SmsBean smsBean1 = new SmsBean();
smsBean1.id = 1;
smsBean1.num = "110";
smsBean1.msg = "警局";
smsBean1.date = "2016-12-12";
arrayList.add(smsBean1);
SmsBean smsBean2 = new SmsBean();
smsBean2.id = 1;
smsBean2.num = "120";
smsBean2.msg = "医院";
smsBean2.date = "2016-12-12";
arrayList.add(smsBean2);
SmsBean smsBean3 = new SmsBean();
smsBean3.id = 1;
smsBean3.num = "119";
smsBean3.msg = "消防";
smsBean3.date = "2016-12-12";
arrayList.add(smsBean3); return arrayList; } }
package com.steel_rocky.xml; public class SmsBean
{
public String num;
public String msg;
public String date;
public int id;
}
XML文件的解析:
dom解析:基于全文加载的解析方式——即要将文件全部加载到内存才能解析
sax解析:基于事件的逐行解析方式——
pull解析:同sax解析方式
xml文件的生成与解析的更多相关文章
- XML文件的创建和解析笔记
解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...
- xml文件的生成
关于android中自定义xml文件的生成,请看示例代码(主要来源于黑马教程): import java.io.File; import java.io.FileNotFoundException; ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- Matlab中使用脚本和xml文件自动生成bus模块
帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...
- 解析XML文件之使用SAM解析器
XML是一种常见的传输数据方式,所以在开发中,我们会遇到对XML文件进行解析的时候,本篇主要介绍使用SAM解析器,对XML文件进行解析. SAX解析器的长处是显而易见的.那就是SAX并不须要将全部的文 ...
- XML文件详解以及解析
转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...
- Python解析xml文件遇到的编码解析的问题
使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...
随机推荐
- django用户登录和注销
django版本:1.4.21. 一.准备工作 1.新建项目和app [root@yl-web-test srv]# django-admin.py startproject lxysite [roo ...
- JDK环境变量详细讲解
首先,你应该已经安装了 java 的 JDK 了,笔者安装的是:jdk-8u65-windows-x64 下载地址: http://www.oracle.com/technetwork/java/ja ...
- 记一次惨痛的线上bug
讲述背景,刚入职新公司2个月的时候,接手一个红包系统.资历尚浅,对业务也不是很熟悉.公司开发新的平台,需要使用红包功能来进行推广,按照产品的需求,进行开发...然而,问题就出在这里,红包接口比较陈旧, ...
- NOIP2003加分二叉树[树 区间DP]
题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都 ...
- 全息眼镜HoloLens可快速捕捉真人3D图像
http://www.d9soft.com/zixun/62287.html 北京时间3月28日午间消息,微软研发部门开发出一种新的3D视频捕捉系统“Holoportation”,可以实现将某人3D图 ...
- SilverFoxServer出炉!!
SilverFoxServer是啥?各位看官搜一下SmartFoxServer便知 是一套服务端+客户端通迅框架,快速搭建起回合制,棋牌类的联机 网页游戏 SilverFoxServer的特点包括 用 ...
- noj[1581] 筷子
题目描述 A先生有很多双筷子.确切的说应该是很多根,因为筷子的长度不一,很难判断出哪两根是一双的.这天,A先生家里来了K个客人,A先生留下他们吃晚饭.加上A先生,A夫人和他们的孩子小A,共K+3个人. ...
- SpringMVC的Controller中使用线程安全的初始化
因为SpringMVC的Controller默认是单例, 在这种情况下, Controller中使用的私有变量必须也是单例, 例如各种service, 否则会有多线程访问数据互相修改的问题. 对于需要 ...
- PAT 1004. 成绩排名 (20) JAVA
读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...
- js判断是否在微信浏览器中打开
用JS来判断,无论是android 还是iphone,ipad 都可以 function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); ...