前言:对xstream不理解的请看:

android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

android XMl 解析神奇xstream 二: 把对象转换成xml

android XMl 解析神奇xstream 三: 把复杂对象转换成 xml

android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

1、创建JavaBeen

package com.android10;
public class Person {
String pName ;
String pAge  ;
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public String getpAge() {
return pAge;
}
public void setpAge(String pAge) {
this.pAge = pAge;
}
}
package com.android10;
public class Product {
private String name ;
private String age  ;
private Person person ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
package com.android10;
import java.util.List;
public class ListBean {
private List<Product> root ;
public List<Product> getRoot() {
return root;
}
public void setRoot(List<Product> root) {
this.root = root;
}
}

2、主要方法

package com.android10;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.InputSource;
import android.app.Activity;
import android.os.Bundle;
import com.thoughtworks.xstream.XStream;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)  {
super.onCreate(savedInstanceState);
setContentView( R.layout.activity_main );
XStream xstream = new XStream() ;
List<Product> root = getList() ;
//将ListBean中的集合设置空元素,即不显示集合元素标签
xstream.addImplicitCollection( ListBean.class, "root");
xstream.autodetectAnnotations(true);
//设置别名
xstream.alias( "product", Product.class );
//将name设置为父类(Student)的元素的属性
xstream.useAttributeFor( Product.class, "name" );
//把list集合转换成Xml字符串
String xmlString =  xstream.toXML(  root ) ;
//把Xml字符串写入SD卡Xml文件
XstreamUtil xstreamUtil = new XstreamUtil() ;
xstreamUtil.writeToXml( this ,  xmlString ) ;
//把Xml字符串转化成list集合
List<Product> list = new ArrayList<Product>() ;
list =  (List<Product>) xstream.fromXML( xmlString ) ;
System.out.println("sss"+  formatXml( xmlString ) );
}
/**
* 得到数据
* @return
*/
private List<Product>  getList(){
Person person1 = new Person() ;
person1.setpName( "saliy" ) ;
person1.setpAge( "36" );
Product product1 = new Product() ;
product1.setName( "jhon" ) ;
product1.setAge( "30" );
product1.setPerson( person1 );
Person person2 = new Person() ;
person2.setpName( "saliy02" ) ;
person2.setpAge( "3602" );
Product product2 = new Product() ;
product2.setName( "jhon02" ) ;
product2.setAge( "3002" );
product2.setPerson( person2 );
List<Product> root = new ArrayList<Product>() ;
root.add( product1 ) ;
root.add( product2 ) ;
return root ;
}
/**
* 格式化XML字符串
* @param xml
* @return
*/
public static String formatXml(String xml){
try{
Transformer serializer= SAXTransformerFactory.newInstance().newTransformer();
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
Source xmlSource=new SAXSource(new InputSource(new ByteArrayInputStream(xml.getBytes())));
StreamResult res =  new StreamResult(new ByteArrayOutputStream());
serializer.transform(xmlSource, res);
return new String(((ByteArrayOutputStream)res.getOutputStream()).toByteArray());
}catch(Exception e){
return xml;
}
}
}
package com.android10;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import android.content.Context;
import android.os.Environment;
public class XstreamUtil {
XcallBack xcallBack ;
/**
* 把xml字符串写入SD卡文件
* @param context
* @param str  xml字符串
*/
public void writeToXml(Context context, String str ){
//获取文件路径
String SDPATH = Environment.getExternalStorageDirectory()  + "/myfile1.xml/" ;
//创建文件
File file = new File( SDPATH ) ;
if( !file.exists() ){
try {
file.createNewFile() ;
} catch (IOException e) {
e.printStackTrace();
}
}
//写入数据
try {
FileOutputStream out = new FileOutputStream( file ) ;
OutputStreamWriter outw = new OutputStreamWriter(out);
try {
outw.write(str);
outw.close();
out.close();
if( xcallBack != null ){
xcallBack.success();
}
} catch (IOException e) {
if( xcallBack != null ){
xcallBack.fail();
}
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
if( xcallBack != null ){
xcallBack.fail();
}
}
}
//设置监听器
void setXStreamLister( XcallBack xcallBack ){
this.xcallBack = xcallBack ;
}
}
interface XcallBack{
/**
* 写入成功
*/
void success() ;
/**
* 写入失败
*/
void fail() ;
}

3、运行结果

<list>
  <product name="jhon">
    <age>30</age>
    <person>
      <pAge>36</pAge>
      <pName>saliy</pName>
    </person>
  </product>
  <product name="jhon02">
    <age>3002</age>
    <person>
      <pAge>3602</pAge>
      <pName>saliy02</pName>
    </person>
  </product>
</list>

android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档相关推荐

  1. android XMl 解析神奇xstream 二: 把对象转换成xml

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  2. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  3. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  4. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  5. 第六讲:BBdoc软件版本升级与文档内容索引更新操作

    第六讲:BBdoc软件版本升级与文档内容索引更新操作

  6. java docx文档解析_带有docx4j的Java Word(.docx)文档

    java docx文档解析 几个月前,我需要创建一个包含许多表和段落的动态Word文档. 过去,我曾使用POI来实现此目的,但是我发现它很难使用,并且在创建更复杂的文档时对我来说效果不佳. 因此,对于 ...

  7. 使用xsl将xml转化为HTML文档,基于XSL将XML文档转换为HTML格式文档的方法与流程

    技术特征: 1.一种基于XSL将XML文档转换为HTML格式文档的方法,其特征在于,包括: S1,新建一个与XML文档同名的HTML格式文档: S2,定义转换算法,实现XML文档到HTML格式文档的转 ...

  8. java计算机毕业设计基于安卓Android的城市公交查询app(源码+系统+mysql数据库+Lw文档)

    项目介绍 本课题城市公交线路查询,采用安卓平台,所完成的可扩展性.可靠性以及可重用性的城市公交线路查询系统,以满足现实生活的需要.数据库选用MySQL. 前端为移动端,采用安卓框架uniapp,开发软 ...

  9. 【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )

    文章目录 一.Android 中的 WebP 图片格式使用 二.WebP 格式转换 三.WebP 参考文档 Android Plugin DSL Reference 参考文档 : Android St ...

最新文章

  1. SAP QM 检验批的系统状态标识‘HUM‘
  2. 昨天死线程的问题又找到了别的原因
  3. C++拷贝构造函数、深拷贝、浅拷贝
  4. 用计算机探索规律反思,《用计算器探索规律》教学反思
  5. MyEclipse显示 Install new software 在线安装插件选项
  6. 深度学习和目标检测系列教程 1-300:什么是对象检测和常见的8 种基础目标检测算法
  7. 2.3.NLTK工具包安装、分词、Text对象、停用词、过滤掉停用词、词性标注、分块、命名实体识别、数据清洗实例、参考文章
  8. Java实现点击导出excel页面遮罩屏蔽,下载完成后解除遮罩
  9. 编程兴趣真的是由“热情”驱动的吗?
  10. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
  11. c# 智能升级程序代码
  12. 属格-my father's car和whose_32
  13. h5点击按钮之后按钮消失_小程序webview跳转页面后没有返回按钮完美解决方案
  14. arm汇编—str,mov等指令
  15. I2S音频接口的理解
  16. 将数字转为中文金额的大写方式(C++版)
  17. python35安装教程_【邢不行量化小讲堂35-python量化入门】建议收藏|Windows下安装TA-Lib终极教程(下)...
  18. Android开发:为什么你的学习效率如此低,为什么你很迷茫?
  19. 大学物理(上)知识点总结
  20. 机器指令-微指令存储相关基本概念

热门文章

  1. matlab函数表达式里分号_C语言表达式和语句
  2. gitkraen_超详细!Github团队协作教程(Gitkraken版)
  3. koreader下载_koreader下载_koreader安装_koreader最新版_koreader安卓版下载_koreader app_易玩网...
  4. 九、深入Java字符串(上篇)
  5. 博士申请 | 哥本哈根大学招收机器学习和信息检索全奖博士生(年薪34万)
  6. 让机器学会看图说话:Image Caption任务最新综述
  7. BERT在文档级排序中的应用
  8. NLP中各框架对变长序列的处理全解
  9. 又为写作思路熬到秃头?这16篇最新论文打包送你
  10. pytorch拼接函数:torch.stack()和torch.cat()--详解及例子