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

简介: 前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xstream 二: 把对象转换成xml android XMl 解析神奇xstream 三:...
前言:对xstream不理解的请看:

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

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

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

android XMl 解析神奇xstream 四: 将复杂的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;
    }
}


2、工具类代码

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();  
                xcallBack.success(); 
            } catch (IOException e) {  
                xcallBack.fail(); 
            }  
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
            xcallBack.fail(); 
        }
    } 


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

}

interface XcallBack{
    /**
     * 写入成功
     */
    void success() ;  

    /**
     * 写入失败
     */
    void fail() ;     
}


3、主要方法

package com.android10;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
import com.thoughtworks.xstream.XStream;
public class MainActivity extends Activity {

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

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

        Product product = new Product() ;
        product.setName( "jhon" ) ;
        product.setAge( "30" );
        product.setPerson( person );

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

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

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

        xUtil.writeToXml( this , string );
    }
}

 

4、运行结果

 

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

 

相关文章
|
21天前
|
XML 存储 JSON
51. 【Android教程】JSON 数据解析
51. 【Android教程】JSON 数据解析
29 2
|
3天前
|
前端开发 JavaScript 测试技术
安卓应用开发中的架构模式解析
【6月更文挑战第21天】在软件开发领域,架构模式是设计优雅、高效、可维护应用程序的基石。本文深入探讨了安卓应用开发中常见的架构模式,包括MVC、MVP、MVVM和Clean Architecture,旨在为开发者提供一个清晰的指导,帮助他们选择最适合自己项目的架构风格。通过对比分析这些架构模式的特点、优势以及适用场景,文章揭示了如何根据项目需求和团队能力来采用恰当的架构模式,以实现代码的可维护性、可扩展性和可测试性。
21 7
|
3天前
|
Java 开发工具 Android开发
安卓与iOS开发差异解析
【6月更文挑战第21天】本文旨在深入探讨安卓和iOS两大移动操作系统在应用开发过程中的主要差异。通过对比分析,揭示各自的设计哲学、编程语言选择、用户界面构建、性能优化策略以及发布流程的异同。文章将提供开发者视角下的实用信息,帮助他们更好地理解各自平台的特点和挑战,从而做出更明智的开发决策。
|
13天前
|
搜索推荐 Android开发 iOS开发
深入解析安卓与iOS操作系统的异同
安卓和iOS是目前两大主流移动操作系统,它们分别代表了开放性和封闭性的设计理念。本文将从系统架构、用户界面、应用生态等方面深入探讨安卓和iOS之间的异同,帮助读者更好地理解这两个操作系统的特点和优势。
24 3
|
17天前
|
存储 Java Android开发
Android上在两个Activity之间传递Bitmap对象
Android上在两个Activity之间传递Bitmap对象
15 2
|
21天前
|
XML 存储 JavaScript
50. 【Android教程】xml 数据解析
50. 【Android教程】xml 数据解析
17 1
|
21天前
|
XML Java Android开发
04. 【Android教程】Android 工程解析及使用
04. 【Android教程】Android 工程解析及使用
17 0
04. 【Android教程】Android 工程解析及使用
|
1月前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
43 0
|
1月前
|
XML 数据格式 Windows
如何从xml文件创建R语言数据框dataframe
如何从xml文件创建R语言数据框dataframe
|
1月前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
38 1