xstream使用初步

工程目录结构

建两个原型Human,Cat

Human.java

import java.util.List;

public class Human {
    private String name;
    private String sex;
    private List<Cat> cats;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public List<Cat> getCats() {
        return cats;
    }
    public void setCats(List<Cat> cats) {
        this.cats = cats;
    }
    @Override
    public String toString() {
        return "Human [name=" + name + ", sex=" + sex + ", cats=" + cats + "]";
    }
    
}

Cat.java

public class Cat {
    private String name;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    
    
}

布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text"
         />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text2"
         />

</LinearLayout>

一个用来测试的res/raw/test.xml

<tong.android.model.Human>
    <name>爷们</name>
    <sex></sex>
    <cats>
        <tong.android.model.Cat>
            <name>cat0</name>
            <sex></sex>
        </tong.android.model.Cat>
    </cats>
</tong.android.model.Human>

然后就是主要的处理文件ActivityMain.java

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import com.thoughtworks.xstream.XStream;

import tong.android.model.Cat;
import tong.android.model.Human;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView tv ;
    private TextView tv2 ;
    private String xml;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.text);
        tv2 = (TextView) findViewById(R.id.text2);
        toXml();
        fromXml();
    }


    private void toXml() {
        XStream xs = new XStream();
        
        Human h = new Human();
        h.setName("爷们");
        h.setSex("XX");
        
        
        List<Cat> cats = new ArrayList<Cat>();
        for(int i=0;i<3;i++){
            Cat c = new Cat();
            c.setName("cat"+i);
            c.setSex("...");
            cats.add(c);
        }
        
        h.setCats(cats);
        xml = xs.toXML(h);
        tv.setText(xml);
        writeXml();
    }


    


    private void fromXml() {
        BufferedReader br = readXml();
        XStream xs = new XStream();
        //StringReader in = new StringReader(xml);
        Human h = (Human) xs.fromXML(br);
        tv2.setText(h.toString());
    }
    
    
    
    private BufferedReader readXml() {
        InputStream is = this.getResources().openRawResource(R.raw.test);
        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(is, "utf-8"));
            
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return br;
    }
    
    
    private void writeXml() {
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

就可以简单的构建xstream的测试环境,但是,要保持编码一致性,尽量使用utf-8

 

还有这里面没有使用别名,希望大家留点神,注意观察下test.xml他的节点,是<包名.Human>不要搞错了

需要引入两个包

 

posted @ 2013-04-10 09:38  梦醒心晴  Views(340)  Comments(0Edit  收藏  举报