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 ...
随机推荐
- Debian Environment Variables
原文:EnvironmentVariables General Environment variables are named strings available to all application ...
- <mvc:default-servlet-handler/>导致SimpleUrlHandlerMapping失效
整理springmvc的demo的时候遇到一件奇葩事情,本来就是想简单演示一下SimpleUrlHandlerMapping的用法就完活.结果写好demo怎么都无法进行映射,就好像根本就没有创建Sim ...
- 调试2440 RAM拷贝至SDRAM遇到的问题
汇编代码主要是初始化一些寄存器,关狗,初始化时钟,初始化存储管理器以便访问内存,然后将SoC上4k RAM数据拷贝至SDRAM,然后在SRAM里面运行,由于代码未正常跑起来,于是使用JLinkExe来 ...
- 地产cio揭秘:帆软大商业智能解决方案如何助力地产行业信息化
一. 地产行业信息化现状 房地产企业核心竞争能力的提升,需要强壮的企业运营管理能力,需要及时.准确.全面的业务数据分析作为参考与支撑.然而很多房地产企业缺乏能够集中体现企业运营活动状况的.全 ...
- ovirt-engine安装
一.安装 1.更新系统 原来是centos4.5 #yum update 升级后到6.7版本. [root@localhost ~]# cat /etc/redhat-release CentOS r ...
- PHP&MySQL(三)——数组
前一段忙着比赛忙着找实习,最后一地鸡毛,就是长长教训罢了.... 看书还是多必须的,试着高效的.踏实的做吧!! <?php //PHP数组其实能创建很多种数据结构,列表,堆栈,队列,树等 //数 ...
- 《Writing Idiomatic Python》前两部分的中文翻译
汇总了一下这本小书前两部分的内容: 翻译<Writing Idiomatic Python>(一):if语句.for循环 翻译<Writing Idiomatic Python> ...
- Vijos1451圆环取数[环形DP|区间DP]
背景 小K攒足了路费来到了教主所在的宫殿门前,但是当小K要进去的时候,却发现了要与教主守护者进行一个特殊的游戏,只有取到了最大值才能进去Orz教主…… 描述 守护者拿出被划分为n个格子的一个圆环,每个 ...
- 项目-基于视频压缩的实时监控系统--tiny6410
项目-基于视频压缩的实时监控系统--tiny6410 @国嵌linux学习笔记. 1. 构造服务端结构体 server struct server { int epfd; //保存epoll指针 st ...
- [No00002A]26个英语字母的原始象形意义、含义、产生及发展历史
我们都知道汉字是象形文字,但如果说英语也是象形文字,你一定会以为纯是无稽之谈.其实,追根溯源,英语的26个字母确实来自于象形文字.这26个字母最初起源于埃及象形文字,后由腓尼基人改进发明了腓尼基字母, ...