android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对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文档相关推荐
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
- 第六讲:BBdoc软件版本升级与文档内容索引更新操作
第六讲:BBdoc软件版本升级与文档内容索引更新操作
- java docx文档解析_带有docx4j的Java Word(.docx)文档
java docx文档解析 几个月前,我需要创建一个包含许多表和段落的动态Word文档. 过去,我曾使用POI来实现此目的,但是我发现它很难使用,并且在创建更复杂的文档时对我来说效果不佳. 因此,对于 ...
- 使用xsl将xml转化为HTML文档,基于XSL将XML文档转换为HTML格式文档的方法与流程
技术特征: 1.一种基于XSL将XML文档转换为HTML格式文档的方法,其特征在于,包括: S1,新建一个与XML文档同名的HTML格式文档: S2,定义转换算法,实现XML文档到HTML格式文档的转 ...
- java计算机毕业设计基于安卓Android的城市公交查询app(源码+系统+mysql数据库+Lw文档)
项目介绍 本课题城市公交线路查询,采用安卓平台,所完成的可扩展性.可靠性以及可重用性的城市公交线路查询系统,以满足现实生活的需要.数据库选用MySQL. 前端为移动端,采用安卓框架uniapp,开发软 ...
- 【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )
文章目录 一.Android 中的 WebP 图片格式使用 二.WebP 格式转换 三.WebP 参考文档 Android Plugin DSL Reference 参考文档 : Android St ...
最新文章
- SAP QM 检验批的系统状态标识‘HUM‘
- 昨天死线程的问题又找到了别的原因
- C++拷贝构造函数、深拷贝、浅拷贝
- 用计算机探索规律反思,《用计算器探索规律》教学反思
- MyEclipse显示 Install new software 在线安装插件选项
- 深度学习和目标检测系列教程 1-300:什么是对象检测和常见的8 种基础目标检测算法
- 2.3.NLTK工具包安装、分词、Text对象、停用词、过滤掉停用词、词性标注、分块、命名实体识别、数据清洗实例、参考文章
- Java实现点击导出excel页面遮罩屏蔽,下载完成后解除遮罩
- 编程兴趣真的是由“热情”驱动的吗?
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
- c# 智能升级程序代码
- 属格-my father's car和whose_32
- h5点击按钮之后按钮消失_小程序webview跳转页面后没有返回按钮完美解决方案
- arm汇编—str,mov等指令
- I2S音频接口的理解
- 将数字转为中文金额的大写方式(C++版)
- python35安装教程_【邢不行量化小讲堂35-python量化入门】建议收藏|Windows下安装TA-Lib终极教程(下)...
- Android开发:为什么你的学习效率如此低,为什么你很迷茫?
- 大学物理(上)知识点总结
- 机器指令-微指令存储相关基本概念
热门文章
- matlab函数表达式里分号_C语言表达式和语句
- gitkraen_超详细!Github团队协作教程(Gitkraken版)
- koreader下载_koreader下载_koreader安装_koreader最新版_koreader安卓版下载_koreader app_易玩网...
- 九、深入Java字符串(上篇)
- 博士申请 | 哥本哈根大学招收机器学习和信息检索全奖博士生(年薪34万)
- 让机器学会看图说话:Image Caption任务最新综述
- BERT在文档级排序中的应用
- NLP中各框架对变长序列的处理全解
- 又为写作思路熬到秃头?这16篇最新论文打包送你
- pytorch拼接函数:torch.stack()和torch.cat()--详解及例子