xstream对象xml互转

时间:2022-09-26 16:44:21

1、引入jar包

xpp3_min-1.1.4c.jar
xstream-1.4.8.jar

2、建立java bean

package com.jdw.bean;

import java.util.ArrayList;
import java.util.List; public class Company {
private List<Department> departments = new ArrayList<Department>(); public List<Department> getDepartments() {
return departments;
} public void addDepartment(Department department) {
this.departments.add(department);
} @Override
public String toString() {
return "Company [departments=" + departments + "]";
} }
package com.jdw.bean;

import java.util.ArrayList;
import java.util.List; public class Department {
private String deptId;
private String name;
private List<Staff> staffs = new ArrayList<Staff>(); public String getDeptId() {
return deptId;
} public void setDeptId(String deptId) {
this.deptId = deptId;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Staff> getStaffs() {
return staffs;
} public void addStaff(Staff staff) {
this.staffs.add(staff);
} @Override
public String toString() {
return "Department [deptId=" + deptId + ", name=" + name + ", staffs=" + staffs + "]";
}
}
package com.jdw.bean;

public class Staff {
private Integer id;
private String name;
private Integer age;
private String address;
private Double salary; @Override
public String toString() {
return "Staff [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + ", salary=" + salary
+ "]";
} public Staff() {
super();
} public Staff(Integer id, String name, Integer age, String address, Double salary) {
super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
this.salary = salary;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
} public Double getSalary() {
return salary;
} public void setSalary(Double salary) {
this.salary = salary;
} }

3、JunitTest

package com.jdw.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.jdw.bean.Company;
import com.jdw.bean.Department;
import com.jdw.bean.Staff;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver; public class XmlTest { private XStream xstream; @Before
public void setUp() throws Exception {
xstream=new XStream(new DomDriver());
xstream.alias("company", Company.class);
xstream.alias("department", Department.class);
xstream.alias("staff", Staff.class); xstream.aliasAttribute(Staff.class, "id","cc");
} @After
public void tearDown() throws Exception { } @Test
public void test() { Company company=new Company(); Department dept1=new Department();
dept1.setDeptId("001");
dept1.setName("技术部");
dept1.addStaff(new Staff(1,"黄药师",40,"山东青岛",new Double(10000)));
dept1.addStaff(new Staff(2,"郭靖",20,"山东济南",new Double(3000))); Department dept2=new Department();
dept2.setDeptId("002");
dept2.setName("销售部");
dept2.addStaff(new Staff(1,"黄蓉",20,"山东青岛",new Double(5000)));
dept2.addStaff(new Staff(2,"张三丰",30,"山东济南",new Double(6000))); company.addDepartment(dept1);
company.addDepartment(dept2); String str="company.xml"; try {
PrintWriter pw=new PrintWriter(str,"UTF-8"); xstream.toXML(company, pw); } catch (FileNotFoundException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } @Test
public void testRead(){
try {
InputStream in=new FileInputStream(new File("company.xml"));
Company company=(Company)xstream.fromXML(in);
System.out.println(company);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

  

xstream对象xml互转的更多相关文章

  1. JAVA bean与XML互转的利器---XStream

    最近在项目中遇到了JAVA bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家 ...

  2. Xstream&lpar;对象和xml转换&rpar;

    package com.vcredit.framework.utils; import java.io.Writer; import org.apache.commons.lang3.StringUt ...

  3. XML和对象属性互转的基类

    本人做了一个XML和对象属性互转的基类,现在放上来有兴趣拿去看一下,用法很简单,声明一个BaseConversion的子类,该子类与你想转换的对象相对应,然后覆盖基类的两个虚方法,然后在里面写元素与对 ...

  4. XML解析---利用XStream解析xml数据及反构造Java对象

    XStream 是一个轻量级的.简单易用的开放源代码 Java库,用于将 Java 对象序列化为 XML 或者再转换回来.而且XStream还能将java对象转成其它格式,比如JSon. 需要用到的包 ...

  5. json、javaBean、xml互转的几种工具介绍

    json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...

  6. C&num;中另辟蹊径解决JSON &sol; XML互转的问题

    C#中另辟蹊径解决JSON / XML互转的问题 最近在一个POC的项目中要用到JSON和XML的相互转换, 虽然我知道很多类库如JSON.NET具备这种功能, 但是我还是另辟蹊径的使用Spider ...

  7. JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

  8. Springboot中使用Xstream进行XML与Bean 相互转换

    在现今的项目开发中,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用,正常的老式方法是通过获取节点来进行一系列操作,个人感觉太过于复杂.繁琐.推荐一套简单的 ...

  9. Jaxb2实现JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

随机推荐

  1. 拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?

    写在前面 除了博文内容之外,和 netfocus 兄的讨论,也可以让你学到很多(至少我是这样),不要错过哦. 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领 ...

  2. QT学习入门笔记

    系统路径 path 添加dll路径,如D:\QT\5.4\mingw491_32. .pro 文件添加 QT +=  widgets,否则出现qapplication no such file or ...

  3. Hexo - 快速,轻量,强大的 Node&period;js 博客框架

    Hexo 是一个快速,轻量,强大的 Node.js 博客框架.带给你难以置信的编译速度,瞬间生成静态文件:支持 Markdown,甚至可以在 Hexo 中集合 Octopress 插件:只需要一个命令 ...

  4. 【转】关于Class&period;forName&lpar;&OpenCurlyDoubleQuote;com&period;mysql&period;jdbc&period;Driver”&rpar;

    原文:http://www.cnblogs.com/gaojing/archive/2012/03/23/2413638.html 传统的使用jdbc来访问数据库的流程为: Class.forName ...

  5. TopCoder----卖柠檬

    1. 题目描述 Problem Statement   You are playing a game called Slime Tycoon.You will be selling Slimonade ...

  6. linux驱动系列之s3c2440内存布局

    刚开始学习linux在2440上面 linux内核分配标志可以分为三类:行为修饰符.区修饰符.类型. 区修饰符表示从哪儿分配内存,内核把物理内存分为多个区,每个区用于不同的目的. 内存中缓冲区存在的原 ...

  7. angular&period;js小知识总结

    angular-watch.html 代码如下: <script> var app = angular.module('app',[]); app.controller('ctrl',fu ...

  8. xdu&lowbar;1048&colon;二分匹配模板测试

    二分匹配的模板题,这里用网络流模板(见刘汝佳<算法竞赛入门经典·训练指南>P359 Dinic算法)做. 将男女生均看做网络上的节点,题中给出的每个"关系"看做一条起点 ...

  9. 存储库-MongoDB简单的操作

    简介: MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 MongoDB是一个面向文档的数据库,而不是关系型的数据库: 不采用关系型主要是为了可扩展性 2.易扩展性 存储在Mong ...

  10. Hadoop开启后jps显示只有jps

    之前在用Mapreduce写代码时,在DFS Location下的会报一个error,大体的意思就是与主机名相关的错误 然后我就觉得可能时Hadoop开启时出了错误,然后我就重启了Hadoop,jps ...