博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
阅读量:6172 次
发布时间:2019-06-21

本文共 3119 字,大约阅读时间需要 10 分钟。

 

简介

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

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

 

1、下载工具 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://svtba.baihongyu.com/

你可能感兴趣的文章
lua/luajit and tcc
查看>>
前端安全即JS代码安全,前端源码安全探讨!
查看>>
如何快速实现异地不同网络打印机共享
查看>>
openinstall免费服务对App推广有哪些作用?
查看>>
基于Docker的微服务CI CD流水线
查看>>
学好SEO需要掌握哪些知识要点?
查看>>
JetBrains GoLand macv2019.1.2中文版如何换成无牵引模式?
查看>>
电气火灾监控系统工作原理
查看>>
中使馆驳斥《金融时报》“中国网络威胁论”
查看>>
【挨踢人物传】茶乡浪子:“传奇”职场路,一生感谢情(第12期)
查看>>
我的友情链接
查看>>
c#关于数据库连接操作的案例
查看>>
聊聊最近接触的媒体查询!
查看>>
HAproxy指南之haproxy重定向应用(案例篇)
查看>>
学习 HTTP协议挺不错的一个类
查看>>
深入字节码 -- ASM 关键接口 MethodVisitor
查看>>
linux 文件权限
查看>>
Linux常用命令集合
查看>>
Oracle DML
查看>>
Linux - FHS文件系统层次标准
查看>>