android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介
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 文件的更多相关文章
- Android APK开发 Drawable文件夹下的自定义Drawable文件
版本:2018/2/11 Drawable的分类 自定义Drawable SVG矢量图 个人总结的知识点外,部分知识点选自<Android开发艺术探索>-第六章 Drawable 1.Dr ...
- Android获取文件夹下的所有子文件名称;
public static List<String> getFilesAllName(String path) { File file=new File(path); File[] fil ...
- android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
- Android开发系列(十七):读取assets文件夹下的数据库文件
在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...
- [Android] 文件夹下文件的个数限制
Android机子的文件夹下有存放文件的个数限制,做了下测试,如下: 在创建第65534个文件时抛出了异常: java.io.IOException: open failed: ENOSPC (No ...
随机推荐
- Windows Azure Compute Emulator无法启动问题解决方案
Visual Studio 2013安装了Windows Azure SDK 2.7,但启动Emulator调试时,出现如下错误: Error: The installed Windows Azure ...
- css3背景颜色渐变
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- 【目录】C#操作Excel组件Spire.XLS系列文章目录
本博客所有文章分类的总目录链接:http://www.cnblogs.com/asxinyu/p/4288836.html 1.C#操作Excel组件Spire.XLS文章目录 1.[原创].NET读 ...
- Java 时间日期系列目录
下面是Java的时间和日期相关文章目录: 01. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar 02. ...
- [Python] Debugger in Pycharm
From: http://blog.csdn.net/u013088062/article/details/50214459 From: http://blog.csdn.net/u013088062 ...
- PHP __DIR__, __FILE__, __FUNCTION__, __CLASS__, __METHOD__, __LINE__, __NAMESPACE__
PHP has large number of predefined constants. This HOWTO will present the seven most important, most ...
- 企业云部署要如何选择IaaS PaaS和SaaS
1为什么IaaS成了灵丹妙药 我非常惊讶,为什么很多传统企业已经接受了云计算,但接受的方式却往往不尽人意.对大多数企业来说,云计算的投入产出比相对较小,并且局限于基础设施层的环节. 就目前而言,大 ...
- IT人的自我导向型学习:学习的4个层次
谈起软件开发一定会想到用什么技术.采用什么框架,然而在盛行的敏捷之下,人的问题逐渐凸显出来.不少企业请人来培训敏捷开发技术,却发现并不能真正运用起来,其中一个主要原因就是大家还没有很好的学习能力.没有 ...
- mysql update中需要根据条件列更新写法update case
以下两条语句是否可以合并成一条: where b>'2015-10-12'; , e='2015-01-01' where b='2015-10-12'; 既然来写博客了,那答案肯定是可以的, ...
- 移动端前端常见的触摸相关事件touch、tap、swipe等整理
前端的很多事件在PC端和浏览器端可公用,但有些事件却只在移动端产生,如触摸相关的事件 本文整理了移动端常见的一些事件,包括原生支持的click.touch.tap.swipe事件,也有定义型的gest ...