package org.zhb.test;
/**
* author : zhb
* data : 2014-2-14
* use packages:
* xmlpull-1.1.3.1.jar
* xpp3_min-1.1.4c.jar
* xstream-1.4.7.jar
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; import com.thoughtworks.xstream.XStream; class Person{
private String name;
private int age;
private String gender;
private Dog dog;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(){};
public Person(String name, int age, String gender, Dog dog) {
this.name = name;
this.age = age;
this.gender = gender;
this.dog = dog;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public String toString(){
return "perName: " + this.name + "\n" +
"perAge: " + this.age + "\n" +
"perGender: " + this.gender + "\n" +
"dogName: " + this.dog.getName() + "\n" +
"dogAge: " + this.dog.getAge() + "\n" +
"dogGender: " + this.dog.getGender();
}
}
class Dog{
private String name;
private int age;
private String gender;
public Dog(){};
public Dog(String name, int age, String gender) {
super();
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
public class TestXS {
private static XStream xs;
static{
xs = new XStream();
}
public static void main(String[] args) throws Exception {
Person per = new Person("王大牛", 29, "男", new Dog("李二狗", 5, "男"));
// String xmlResult = xs.toXML(per);
// System.out.println(xmlResult);//控制台输出
String pathName = "D:/per.xml";
// xml2File(per, pathName, "gbk", "Sola");
Person per2 = (Person)File2Object(pathName, per, "Sola", "gbk");
System.out.println(per2); }
public static void xml2File(Object obj, String pathName, String aliasName) throws Exception{
//按系统默认编码写到文件
if(null != aliasName && !("".equals(aliasName)))//不使用别名此参数填入""或null
xs.alias(aliasName, obj.getClass());//为最外层标签指定别名,默认为包名+类名
xs.toXML(obj, new FileWriter(new File(pathName)));
//或 xs.toXML(obj, new FileOutputStream(new File(pathName)));
}
public static void xml2File(Object obj, String pathName, String charsetName, String aliasName) throws Exception{
//按指定编码写到文件
if(null != aliasName && !("".equals(aliasName)))//不使用别名此参数填入""或null
xs.alias(aliasName, obj.getClass());//为最外层标签指定别名,默认为包名+类名
xs.toXML(obj, new OutputStreamWriter(new FileOutputStream(new File(pathName)), charsetName));
}
public static Object File2Object(String pathName, Object obj, String rootName){
//按系统默认编码读取文件
if(null != obj && null != rootName)//未使用别名,两个参数填入null即可
xs.aliasType(rootName, obj.getClass());//写入文件时用过别名,读取时许指定别名对应的类
return xs.fromXML(new File(pathName));
}
public static Object File2Object(String pathName, Object obj, String rootName, String charsetName) throws Exception{
//按指定编码读取文件
if(null != obj && null != rootName)//未使用别名,两个参数填入null即可
xs.aliasType(rootName, obj.getClass());//写入文件时用过别名,读取时许指定别名对应的类
return xs.fromXML(new InputStreamReader(new FileInputStream(new File(pathName)), charsetName));
}
}

XStream简单使用01——xml和Ojbect互转的更多相关文章

  1. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

  2. XStream进行xml和bean互转

    加入pom <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>x ...

  3. JavaScript实现XML与JSON互转代码(转载)

    下面来分享一个关于JavaScript实现XML与JSON互转例子,这里面介绍了国外的三款xml转json的例子,希望这些例子能给你带来帮助. 最近在开发在线XML编辑器,打算使用JSON做为中间格式 ...

  4. Json、JavaBean、Map、XML之间的互转

    思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId ...

  5. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  6. XML 和 List 互转类

    XML 和 List 互转类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  7. JAVA中 XML与数据库互转 学习笔记三

    要求 必备知识 JAVA基础知识,XML基础知识,数据库的基本操作. 开发环境 MyEclipse10/MySql5.5 资料下载 源码下载   数据库在数据查询,修改,保存,安全等方面与其他数据处理 ...

  8. c++实现Xml和json互转【转】

    https://blog.csdn.net/kfy2011/article/details/51774242 1.下载c语言的cJson库源码,库很小,只有两个文件cJSON.c和cJSON.h.下载 ...

  9. SqlServer简单的操作XML以及SQl的 try catch等统一格式

    1:SqlServer简单的操作XML: ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money] @Create_By VARCHAR(), @ ...

随机推荐

  1. IOS开发UI篇之──自定义UIActionSheet

    转载自:http://www.cnblogs.com/pengyingh/articles/2343200.html UIActionSheet类系IOS开发中实现警告框的重要的类,而在好多应用中,都 ...

  2. 牛一网ecshop家电数码模板(仿易迅网)for ecshop 2.7.3

            本模板尤其适用于家电数码行业. 本模板已经开发.测试完毕,并开放演示. 本模板支持全站静态.销售数量后台自定义.首页商品独立图片.品牌独立展示.商品精美团购.宽屏窄屏自动识别并切换.分 ...

  3. android中ListView点击和里边按钮点击不能同时生效问题解决

    今天遇到一个问题:android中ListView点击和里边button点击不能同时生效问题解决. 原因是: listView 在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得 ...

  4. 实现当UILable的内容超出其范围后自动滚动效果

    本文主要介绍 [当UILabel的内容超出其自身的宽度范围后,进行互动展示的效果],我们先来看一下Demo的效果图. 实际实现起来并不十分繁杂,在这里,为了开发的效率,我们使用了一个已经封装好的UIL ...

  5. Android主题切换方案总结

    所谓的主题切换,就是能够根据不同的设定,呈现不同风格的界面给用户,也就是所谓的换肤. 1.将主题包(图片与配置)存到SD卡上(可通过下载或手动放入指定目录),在代码里强制从本地文件创建图片与配置文字大 ...

  6. 第一个felx项目的创建

    使用新建flex项目向导建立项目

  7. 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题

    今天把notice表中的content字段改为long字段后,含有该字段的使用CTE的查询语句报错了.提示一下错误 ### Cause: java.sql.SQLException: 流已被关闭 ; ...

  8. Nginx高性能服务器安装、配置、运维 (4) —— Nginx服务、架构及其信号

    五.Nginx服务.架构及其信号 (1)Nginx服务的查看 1.netstat -antp 查看Nginx是否在80端口运行: 2.ps aux|grep nginx 查看nginx相关进程: 发现 ...

  9. PV 并发量的计算

    http://blog.csdn.net/xingxing513234072/article/details/17336573 PV与并发之间换算的算法换算公式 并发连接数 = PV / 统计时间 * ...

  10. EF的TransactionScope

    TransactionScope是一个分布式事务的语句块,被包含起来的语句一起被提交,当出现异常,一起回滚,这都是托管的 当Web没有开启MSDTC服务时候会出现: