简介

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. windows 2008 R2 64位系统,找到Microsoft Excel 应用程序

    在windows  2003 操作系统中, 1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务", 2.依次双击& ...

  2. [Code::Blocks] Install wxWidgets & openCV

    The open source, cross platform, free C++ IDE. Code::Blocks is a free C++ IDE built to meet the most ...

  3. 【转载】Linux中强大且常用命令:find、grep

    转载自:http://www.linuxeden.com/html/softuse/20130804/142065.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find. ...

  4. 网游中的网络编程3:在UDP上建立虚拟连接

    目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网络编程3:在UDP上建立虚拟连接 TODO 二.在UDP上建立虚拟连接 介绍 UDP是无连接的,一 ...

  5. Android学习笔记之如何使用圆形菜单实现旋转效果...

    PS:最近忙于项目的开发,一直都没有去写博客,是时候整理整理自己在其中学到的东西了... 学习内容: 1.使用圆形菜单并实现旋转效果..     Android的圆形菜单我也是最近才接触到,由于在界面 ...

  6. 初涉SQL Server性能问题(3/4):列出阻塞的会话

    在 初涉SQL Server性能问题(2/4)里,我们讨论了列出等待资源或正运行的会话脚本.这篇文章我们会看看如何列出包含具体信息的话阻塞会话清单. /************************ ...

  7. C#函数式程序设计之用闭包封装数据

    如果一个程序设计语言能够用高阶函数解决问题,则意味着数据作用域问题已十分突出.当函数可以当成参数和返回值在函数之间进行传递时,编译器利用闭包扩展变量的作用域,以保证随时能得到所需要的数据. C#函数式 ...

  8. Do not to test a private method.

    If you want to unit test a private method, something may be wrong. Unit tests are (generally speakin ...

  9. ok6410 android driver(3)

    This article discusses the Makefile and how to port the module to different platform (localhost and ...

  10. ADO.NET学习系列(二)

    这次我使用ADO.NET来插入一条数据,到数据库中.主用到存储过程.我不想每次都是用SQL文本的形式了,那样始终没有进步--- 下面首先,我把我这次练习要用到的数据库脚本,贴出来: USE maste ...