【Android 基础】 android Xml 解析之 XStream 解析

image.png

XStream解析

XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换,将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件.

1. 下载路径

http://x-stream.github.io/download.html

2. 常用方法API

(1)fromXML()方法,返回值是Object

xStream.fromXML( File file) ;

xStream.fromXML( InputStream in) ;

xStream.fromXML( Reader reader ) ;

xStream.fromXML( String xml ) ;

xStream.fromXML( URL url ) ;

xStream.fromXML( File file , Object root ) ;

xStream.fromXML( InputStream in , Object root ) ;

xStream.fromXML( Reader reader , Object root ) ;

xStream.fromXML( String xml , Object root ) ;

xStream.fromXML( URL url , Object root ) ;  

(2)toXML()方法

xStream.toXML( Object object ) ;   //返回值String

xStream.toXML( Object object , OutputStream out ); //返回值void

xStream.toXML( Object object , Writer writer );  //返回值void

(3)设置别名
根节点设置别名:参数一:别名 ; 参数二:当前的类名
xstream.alias( "blog" , Product.class ) ;

XStream 解析android项目 asset 文件夹 xml 文件

1. packageupdate.xml

<?xml version="1.0" encoding="utf-8"?>

<result>
    <version>1.0</version>
    <upgradeMode>1</upgradeMode>
    <packages>
        <versionName>1.00.01</versionName>
        <url> <![CDATA[http://www.baidu.com]]></url>
        <level>1</level>
        <size>5550672</size>
        <md5>A48F51DB26DE9EA8492AC5031647E8A2</md5>
        <time>2016-06-27</time>
        <desc> <![CDATA[ 1、修正了有线连接显示问题 ]]> </desc>
    </packages>
</result>

2. Java 实体类

Result.java

package com.sky.xsteamtoparserxml;

/**
 * Created by JerryLiu on 2016/7/19.
 */
public class Result {

    private String version;
    private int upgradeMode;
    private Packages packages;

    public int getUpgradeMode() {
        return upgradeMode;
    }

    public void setUpgradeMode(int upgradeMode) {
        this.upgradeMode = upgradeMode;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public Packages getPackages() {
        return packages;
    }

    public void setPackages(Packages packages) {
        this.packages = packages;
    }
}

package.java

package com.sky.xsteamtoparserxml;

/**
 * Created by JerryLiu on 2016/7/19.
 */
public class Packages {
    private String versionName;
    private String url;
    private int level;
    private int size;
    private String md5;
    private String time;
    private String desc;

    public String getVersionName() {
        return versionName;
    }

    public void setVersionName(String versionName) {
        this.versionName = versionName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public String getMd5() {
        return md5;
    }

    public void setMd5(String md5) {
        this.md5 = md5;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}

3. 实现代码

public class MainActivity extends AppCompatActivity {

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

        String fileName = "packageupdate.xml";
        InputStream in = null;
        try {
            in = getResources().getAssets().open(fileName);
            XStream xStream = new XStream();
            xStream.alias("result", Result.class);
            Result result = (Result) xStream.fromXML(in);
            LogUtils.d("version = " + result.getVersion() + "\nupgradeMode = " + result.getUpgradeMode());
            LogUtils.d(result.getPackages());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. 运行结果

 D/LogUtils-/MainActivity.onCreate(MainActivity.java:30): version = 1.0;
 upgradeMode = 1;
 Packages {desc = "  1、修正了有线连接显示问题  ", 
 versionName = "1.00.01", 
 md5 = "A48F51DB26DE9EA8492AC5031647E8A2", 
 url = " http://www.baidu.com", 
 time = "2016-06-27", 
 size = 5550672, 
 level = 1} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,865评论 0 4
  • 宋诗:一曲新词酒一杯,去年天气旧亭台,夕阳西下几时。
    碧海蓝天lin阅读 195评论 0 0