免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1578 | 回复: 2
打印 上一主题 下一主题

[Android] 把复杂对象转换成 xml ,并写入SD卡中的xml文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-15 12:56 |只看该作者 |倒序浏览
1、建立JavaBeen
  1. package com.android10;

  2. public class Person {

  3.     String pName ;
  4.     String pAge  ;
  5.    
  6.     public String getpName() {
  7.         return pName;
  8.     }
  9.     public void setpName(String pName) {
  10.         this.pName = pName;
  11.     }
  12.     public String getpAge() {
  13.         return pAge;
  14.     }
  15.     public void setpAge(String pAge) {
  16.         this.pAge = pAge;
  17.     }
  18. }
复制代码
  1. package com.android10;

  2. public class Product {

  3.     private String name ;

  4.     private String age  ;

  5.     private Person person ;

  6.     public String getName() {
  7.         return name;
  8.     }

  9.     public void setName(String name) {
  10.         this.name = name;
  11.     }

  12.     public String getAge() {
  13.         return age;
  14.     }

  15.     public void setAge(String age) {
  16.         this.age = age;
  17.     }

  18.     public Person getPerson() {
  19.         return person;
  20.     }

  21.     public void setPerson(Person person) {
  22.         this.person = person;
  23.     }
  24. }
复制代码
2、工具类代码
  1. package com.android10;

  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStreamWriter;

  7. import android.content.Context;
  8. import android.os.Environment;

  9. public class XstreamUtil {

  10.     XcallBack xcallBack ;

  11.     /**
  12.      * 把xml字符串写入SD卡文件
  13.      * @param context
  14.      * @param str    xml字符串
  15.      */
  16.     public void writeToXml(Context context, String str ){  

  17.         //获取文件路径
  18.         String SDPATH = Environment.getExternalStorageDirectory()  + "/myfile1.xml/" ;

  19.         //创建文件
  20.         File file = new File( SDPATH ) ;
  21.         if( !file.exists() ){
  22.             try {
  23.                 file.createNewFile() ;
  24.             } catch (IOException e) {
  25.                 e.printStackTrace();
  26.             }
  27.         }

  28.         //写入数据
  29.         try {
  30.             FileOutputStream out = new FileOutputStream( file ) ;
  31.             OutputStreamWriter outw = new OutputStreamWriter(out);  
  32.             try {  
  33.                 outw.write(str);  
  34.                 outw.close();  
  35.                 out.close();  
  36.                 xcallBack.success();
  37.             } catch (IOException e) {  
  38.                 xcallBack.fail();
  39.             }  
  40.         } catch (FileNotFoundException e1) {
  41.             e1.printStackTrace();
  42.             xcallBack.fail();
  43.         }
  44.     }


  45.     void setXStreamLister( XcallBack xcallBack ){
  46.         this.xcallBack = xcallBack ;
  47.     }

  48. }

  49. interface XcallBack{
  50.     /**
  51.      * 写入成功
  52.      */
  53.     void success() ;  

  54.     /**
  55.      * 写入失败
  56.      */
  57.     void fail() ;     
  58. }
复制代码
3、主要方法
  1. package com.android10;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.Toast;
  5. import com.thoughtworks.xstream.XStream;
  6. public class MainActivity extends Activity {

  7.     @Override
  8.     public void onCreate(Bundle savedInstanceState)  {
  9.         super.onCreate(savedInstanceState);
  10.         setContentView( R.layout.activity_main );

  11.         Person person = new Person() ;
  12.         person.setpName( "saliy" ) ;
  13.         person.setpAge( "36" );

  14.         Product product = new Product() ;
  15.         product.setName( "jhon" ) ;
  16.         product.setAge( "30" );
  17.         product.setPerson( person );

  18.         //将对象转化为xml字符串
  19.         XStream xstream = new XStream() ;
  20.         //设置别名
  21.         xstream.alias( "blog" , Product.class ) ;
  22.         String string = xstream.toXML( product ) ;

  23.         XstreamUtil xUtil = new XstreamUtil() ;
  24.         xUtil.setXStreamLister( new XcallBack() {
  25.             @Override
  26.             public void success() {
  27.                 Toast.makeText( MainActivity.this , "成功了 ", Toast.LENGTH_SHORT ).show();
  28.             }

  29.             @Override
  30.             public void fail() {
  31.                 Toast.makeText( MainActivity.this , "失败了 ", Toast.LENGTH_SHORT ).show();
  32.             }
  33.         });

  34.         xUtil.writeToXml( this , string );
  35.     }
  36. }
复制代码
4、运行结果

<blog>
  <age>30</age>
  <name>jhon</name>
  <person>
    <pAge>36</pAge>
    <pName>saliy</pName>
  </person>
</blog>

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2015-07-01 17:13 |只看该作者
保存。这种方式的使用不太实用。

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
3 [报告]
发表于 2015-07-22 16:52 |只看该作者
直接保存在本地缓存中比较好的  getSharedPreferences

Editor editor = sp.edit();
        editor.putString(key, context);
        editor.commit();
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP