生成方法一:同事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文件的生成与解析的更多相关文章

  1. XML文件的创建和解析笔记

    解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...

  2. xml文件的生成

    关于android中自定义xml文件的生成,请看示例代码(主要来源于黑马教程): import java.io.File; import java.io.FileNotFoundException; ...

  3. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  4. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  5. 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来 ...

  6. Matlab中使用脚本和xml文件自动生成bus模块

    帮一个老师写的小工具 在一个大工程中需要很多bus来组织信号,而为了规范接口,需要定义很多BusObject,用Matlab语言手写这些BusObject比较费工夫 所以用xml配置文件来写,也便于更 ...

  7. 解析XML文件之使用SAM解析器

    XML是一种常见的传输数据方式,所以在开发中,我们会遇到对XML文件进行解析的时候,本篇主要介绍使用SAM解析器,对XML文件进行解析. SAX解析器的长处是显而易见的.那就是SAX并不须要将全部的文 ...

  8. XML文件详解以及解析

    转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...

  9. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

随机推荐

  1. C中的数组与指针问题

    反复在数组名与指针上犯错误,特记录下. ,,,,}; int *p, *q; p = (); q = (); *(p+1)?   *(q-1) ? 答案是 3, 5.这里主要涉及的问题就是指针参与运算 ...

  2. css3中变形与动画(三)

    transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. anima ...

  3. 解决docker容器中文乱码,修改docker容器编码格式

    前台上传文件到服务器后,服务器返回给前台的文件列表中出现中文乱码,所有的中文文件名全部变成?,英文文件名则正常显示. 问题经过定位,发现后台代码的multipartfile类在执行transterto ...

  4. 借用Snippet插件美化博客中的代码

    书写博客,难免要贴出代码.然而直接贴出代码,则不美观.于是,应运而生出现了很多代码美化的插件.其中比较有名的是Syntax Highlighting插件.   笔者在网上翻阅的时候发现了Snippet ...

  5. Markdown learning

    For details, please refer to Markdown # Markdown Learning #h1 ##h2 ###h3 ####h4 **Bond** *italic* Th ...

  6. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  7. No 'Access-Control-Allow-Origin' header is present on the requested resource.

    今天做一个AJAX案例时,浏览器监控到如下错误: XMLHttpRequest cannot load http://54.169.69.60:8081/process_message. No 'Ac ...

  8. POJ 1556 The Doors【最短路+线段相交】

    思路:暴力判断每个点连成的线段是否被墙挡住,构建图.求最短路. 思路很简单,但是实现比较复杂,模版一定要可靠. #include<stdio.h> #include<string.h ...

  9. JavaScript 各种页面跳转方法

    第一种: window.location.href="login.jsp?backurl=\"+window.location.href; 第二种: alert("返回& ...

  10. 比较全的JavaScript倒计时脚本[xyytit]

    需要做一个功能,给特定的活动或者商品添加一个倒计时提示,在网上找了好些方法,总结了比较好的一些方法,以备后用: 1. 比较长时间的倒计时(如:距离2014年还有0年, 0月, 30天, 9小时, 41 ...