博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
阅读量:6886 次
发布时间:2019-06-27

本文共 5977 字,大约阅读时间需要 19 分钟。

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

 

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
root ; public List
getRoot() { return root; } public void setRoot(List
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
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
list = new ArrayList
() ; list = (List
) xstream.fromXML( xmlString ) ; System.out.println("sss"+ formatXml( xmlString ) ); } /** * 得到数据 * @return */ private List
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
root = new ArrayList
() ; 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>

 

转载地址:http://gtabl.baihongyu.com/

你可能感兴趣的文章
[New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
查看>>
字体随着ProgressBar的加载而滚动
查看>>
Handler 机制再了解
查看>>
如果你是前端工程师,把你的网站或者你知道的网站加进来吧
查看>>
阿里云产品头条(2017年12月刊)
查看>>
探究SQL添加非聚集索引,性能提高几十倍之谜
查看>>
Java 如何不使用 volatile 和锁实现共享变量的同步操作
查看>>
追踪解析 Disruptor 源码
查看>>
【剑指offer】让抽象问题具体化
查看>>
聊聊flink的AbstractNonHaServices
查看>>
搭建一个通用的脚手架
查看>>
PAT A1071
查看>>
【笔记】重学前端-winter
查看>>
windows下重装xampp并做mysql数据迁移的步骤
查看>>
Java日志组件间关系
查看>>
聊聊前端国际化文案该如何处理
查看>>
JS难点之hoist
查看>>
“独角兽”企业都爱选择腾讯云,背后原因值得考究
查看>>
浅析 Vue 2.6 中的 nextTick 方法
查看>>
199. Binary Tree Right Side View
查看>>