简介

XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换。

将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件。

1、下载工具 xstream

下载最新版本地址: https://nexus.codehaus.org/content/repositories/releases/com/thoughtworks/xstream/

下载完成后 把jar包导入到自己的android项目中

2、 常用的方法:

(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.aliasField( "blogName" , Person.class , "pName" ) ;

(4)XML字符串格式化

/**
* 格式化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;
}
}

3、asset 文件夹 下的 aa.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<product>   
<name>jike</name> 
<age>30</age>
</product>

4、实体

package com.android10;

public class Product {

    private String name ;

    private String age  ;

    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;
}
}

5、实现代码

package com.android10;
import java.io.IOException;
import java.io.InputStream;
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 ); //得到资源中的数据流
String fileName = "aa.xml" ; //文件名字
try {
InputStream in = getResources().getAssets().open( fileName ) ;
XStream xstream = new XStream() ;
xstream.alias( "product" , Product.class ); //这里的product一定要和 xml文件中的 product 保持一直,否则会报错的.
Product product = (Product) xstream.fromXML( in ); System.out.println("sss " + product.getName() + product.getAge() );
} catch (IOException e) {
e.printStackTrace();
}
}
}

6、运行结果
   sss jike30

7、项目下载地址

http://download.csdn.net/detail/yanzi2015/8797641

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

  1. Android APK开发 Drawable文件夹下的自定义Drawable文件

    版本:2018/2/11 Drawable的分类 自定义Drawable SVG矢量图 个人总结的知识点外,部分知识点选自<Android开发艺术探索>-第六章 Drawable 1.Dr ...

  2. Android获取文件夹下的所有子文件名称;

    public static List<String> getFilesAllName(String path) { File file=new File(path); File[] fil ...

  3. android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

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

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  5. android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

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

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

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

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  8. Android开发系列(十七):读取assets文件夹下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...

  9. [Android] 文件夹下文件的个数限制

    Android机子的文件夹下有存放文件的个数限制,做了下测试,如下: 在创建第65534个文件时抛出了异常: java.io.IOException: open failed: ENOSPC (No ...

随机推荐

  1. easyui + jdbc 实现简单的数据库管理。

    /** * 分页未完成 ,执行sql 查询 与 更新未完成. * 代码拿去,有同学完成了可以再分享出来. * 代码稍微有些乱,没时间整理. * 暂时仅支持oracle ,因sql语句黏合度太高. * ...

  2. Win7上Git安装及配置过程

    Win7上Git安装及配置过程 文档名称 Win7上Git安装及配置过程 创建时间 2012/8/20 修改时间 2012/8/20 创建人 Baifx 简介(收获) 1.在win7上安装msysgi ...

  3. access里like的通配符不能用%,要用*

    转自http://www.knowsky.com/339881.html access里like的通配符用法是这样:     “?”表示任何单一字符: “*”表示零个或多个字符: “#”表示任何一个数 ...

  4. SQL Server 中关于 @@error 的一个小误区

    在SQL Server中,我常常会看到有些前辈这样写: ) ROLLBACK TRANSACTION T else COMMIT TRANSACTION T 一开始,我看见别人这么写,我就想当然的以为 ...

  5. ASP.NET MVC 中如何用自定义 Handler 来处理来自 AJAX 请求的 HttpRequestValidationException 错误

    今天我们的项目遇到问题 为了避免跨站点脚本攻击, 默认我们项目是启用了 validateRequest,这也是 ASP.NET 的默认验证规则.项目发布后,如果 customError 启用了,则会显 ...

  6. how to create a framework for ios . cool!

    预热. http://www.raywenderlich.com/65964/create-a-framework-for-ios http://insert.io/framework-ios8-xc ...

  7. 说说你所熟知的MSSQL中的substring函数

    说说你所熟知的MSSQL中的substring函数 *:first-child { margin-top: 0 !important; } body>*:last-child { margin- ...

  8. 配置visual studio code进行asp.net core rc2的开发

    1.安装.net core sdk https://github.com/dotnet/cli#installers-and-binaries,根据你的系统选择下载. 2.下载vscode的C#扩展插 ...

  9. css - position relative与display table-cell深入分析

    在很多时候,想使用 display: table; 以及其子元素使用 display: table-cell 都只是为了使用 vertical-align 这一属性.这是一个很简单的常识,但这次在项目 ...

  10. Node.js Web 开发框架大全《静态文件服务器篇》

    这篇文章与大家分享优秀的 Node.js 静态服务器模块.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能 ...