生成方法一:同事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. myeclipse优化

    myeclipse优化 http://blog.163.com/cayyenne@126/blog/static/12186261420100611546658/

  2. RAM,SRAM,DRAM,SDRAM,DDR RAM,ROM,PROM,EPROM,EEPROM,NAND FLASH,NOR FLASH的区别

    RAM:由字面意思就可以理解,SDRAM SRAM DRAM(下面蓝色字体的这几种)都可以统称RAM,random access memory(随机存取存储器)的缩写,下面是51hei.com为大家整 ...

  3. Linux 下从头再走 GTK+-3.0 (五)

    实践中表明,纯粹利用 gtk 函数来创建 UI 是很繁琐的事,需要编写很多代码.怎样才能快速统一的建立 UI 布局呢? 可喜的是 GTK 提供了一个 GtkBuilder 用于快速创建界面.它读取一个 ...

  4. [译] 企业级 OpenStack 的六大需求(第 2 部分):开放架构和混合云兼容

    全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 在本系列的第一部分,我介绍了企业级 OpenStack 的六大需求.现在,我 ...

  5. AI (Adobe Illustrator)详细用法(四)

    本节主要是介绍和形状相关的操作. 一.外观面板的使用 熟悉外观面板的使用很重要. 1.新增描边 外观面板可以让我们增加多个描边. 点击“新增描边”,系统自动添加一个描边. 选中文字,新增描边,可以修改 ...

  6. 【2016-10-14】【坚持学习】【Day5】【单例模式】

    今天学习第二个模式:单例模式.只允许系统有一个实例运行,提供全局访问该实例的公共方法. class Singleton { private static Singleton instance=null ...

  7. NOIP2000方格取数[DP]

    题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 ...

  8. VR可以用做除游戏外的哪些地方

    虚拟现实可以将你传送到平时不敢去的地方, 例如喜马拉雅山顶. 也可以将你带到人类几乎不可能到达的地方, 例如世界上最深处, 马里亚纳海沟.马里亚纳海沟最深处的水压可是达到惊人的110Mpa, 这个高压 ...

  9. SpringMVC讲解

    2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...

  10. php一句话后门过狗姿势万千之传输层加工(1)

    写在前面:过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面.但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会 ...