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 ...
随机推荐
- linux进程间通信-管道
一 管道的局限性 管道有两个局限性:(1)他是半双工(即数据只能在一个方向上流动).(2)它只能在具有公共祖先的进程之间使用.一个管道由一个进程创建,然后该 进程调用fork,此后父子进程之间就可该管 ...
- Nginx之location 匹配规则详解
有些童鞋的误区 1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通, ...
- java报表工具FineReport的SQL编辑框的语法简介
感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineRepo ...
- [转]使用Oracle SQL Developer 17410 提示无法从套接字获取更多数据如何解决
本文转自:http://m.educity.cn/ite/1121475.html 将oracle?安装目录下的Network/admin/listener.ora文件中的 (PROGRAM = ex ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
- HDU5492 Find a path[DP 方差]
Find a path Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- [No000023]为何没有更多人从事程序员的工作?程序员常有,优秀程序员不常有!
成为优秀的程序员是极其困难的,并且这个过程不可能一蹴而就. 我们不可能期待去种一些树,然后一夜间收获有着2000年树龄的红杉树,无论其需求有多大. 人格特点 一个人首先得是自学者来学习编程.仅仅是超过 ...
- JavaScript Number 对象
JavaScript Number 对象 Number 对象 Number 对象是原始数值的包装对象. Number 创建方式 new Number(). 语法 var num = new Numbe ...
- 产品经理技能之BRD的笔记之菜鸟入门
链接:http://www.woshipm.com/pmd/178527.html?utm_source=tuicool 要学习MRD.PRD,先从BRD开始,才能做到知其然知其所以然. BRD是什么 ...
- Linux操作系统下三种配置环境变量的方法
现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作 ...