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 ...
随机推荐
- JavaScript基础知识整理
只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...
- java攻城狮之路(Android篇)--Activity生命
一:Activity的激活 1.写一个类 extends Activity Activity是android的四大组件之一.Activity的激活分为显式意图激活和隐式意图激活.如果一个activit ...
- 使用NPOI导出excel
NPOI下载地址http://npoi.codeplex.com/releases 从项目中引用NPOI.bll和NPOI.OOXML.bll 引用命名控件 using NPOI.HSSF.UserM ...
- MyBatis知多少(4)MyBatis的优势
MyBatis是一个混合型解决方案.它汲取了所有这些解决方案中最有价值的思想并将它们融会贯通.下表总结了MyBatis从我们之前讨论的那些方案中所汲取的思想. 方 案 相同的优点 解决的问题 存储过程 ...
- Visual Studio工具——为编辑器增加垂直辅助线
原文:<Visual Studio工具> Posted on 2014/03/13 ==================================================== ...
- Metatable和Metamethod
Metatable和Metamethod是用来干啥的?它们可以使得表a和b的表达式“a + b”变得有意义,其中metatable使两个不相关的表a和b之间可以进行操作,而操作的具体行为比如说&quo ...
- 【转载】VMware下LINUX的虚拟机增加磁盘空间
转载自:http://space.itpub.net/24435147/viewspace-694200 VMware6.7安装目录下有一个命令行工具vmware-vdiskmanager.exe 程 ...
- iOS-appStore发布流程
appStore上传苹果应用程序软件发布流程http://blog.sina.com.cn/s/blog_68661bd801019uzd.html
- webapp开发之需要知道的css细节
引言 首先说明一下,本文分享对象是涉世未深的移动开发者,至于有经验的开发者可以自行绕道. 说来惭愧,做了几年pc端的前端开发,很少接触到webapp的移动端开发.如今有机会参与webapp的开发,发现 ...
- 数论 - 素数的运用 --- poj 2689 : Prime Distance
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12512 Accepted: 3340 D ...