Utils 类:

 import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.io.UnsupportedEncodingException; import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller; /**
* Created by Leo on 2017/2/10.
*/
public class XmlUtils {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static <T extends Serializable> T deserialize(String xmlFilePath, Class clazz)
throws FileNotFoundException, JAXBException, UnsupportedEncodingException {
JAXBContext context = JAXBContext.newInstance(clazz);
Unmarshaller unmarshal = context.createUnmarshaller();
FileInputStream fis = new FileInputStream(xmlFilePath);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
return (T) unmarshal.unmarshal(isr);
} public static <T> void serialize(T obj, String xmlFilePath) {
FileWriter writer = null;
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshal = context.createMarshaller();
marshal.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshal.marshal(obj, System.out);
writer = new FileWriter(xmlFilePath);
marshal.marshal(obj, writer);
} catch (Exception e) {
e.printStackTrace();
}
} }

根目录对应的类:

 import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
import java.util.*; /**
* Created by Leo on 2017/2/10.
*/
@XmlRootElement(name = "WorkflowProcesses")
public class WorkflowProcessList implements Serializable { @XmlElement(name = "WorkflowProcess")
private List<WorkflowProcess> items; public WorkflowProcessList() {
this.items = new ArrayList<WorkflowProcess>();
} public void addProcess(WorkflowProcess process) {
this.items.add(process);
} public Iterator<WorkflowProcess> iterator() {
return items.iterator();
} public List<WorkflowProcess> getItems() {
return this.items;
} }

子类:

 import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType; @XmlType(propOrder = { "id", "name", "activities", "transitions" })
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "wp")
public class WorkflowProcess implements Serializable { @XmlAttribute(name = "Id")
private String id; @XmlAttribute(name = "Name")
private String name; @XmlElementWrapper(name = "Activities")
@XmlElement(name = "Activity")
private List<Activity> activities; @XmlElementWrapper(name = "Transitions")
@XmlElement(name = "Transition")
private List<Transition> transitions; public WorkflowProcess() {
this.activities = new ArrayList<Activity>();
this.transitions = new ArrayList<Transition>();
} public String getName() {
return this.name;
} public void setName(String value) {
this.name = value;
} public String getId() {
return this.id;
} public void setId(String value) {
this.id = value;
} public void addActivity(Activity activity) {
this.activities.add(activity);
} public List<Activity> getActivities() {
return this.activities;
} public List<Transition> getTransitions() {
return this.transitions;
} }

子类2:

 import java.io.Serializable;

 import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType; /**
* Created by Leo on 2017/2/10.
*/
@XmlType(name = "Activity", propOrder = { "id", "type", "name", "width", "height", "coordinate" })
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Activity implements Serializable { @XmlAttribute(name = "Id")
private String id; @XmlAttribute(name = "Type")
private String type; @XmlAttribute(name = "Name")
private String name; @XmlAttribute(name = "Width")
private int width; @XmlAttribute(name = "Height")
private int height; @XmlElement(name = "Coordinates")
private Coordinate coordinate; public Activity() { } public Activity(String id, String type, String name) {
this.id = id;
this.type = type;
this.name = name;
} public String getId() {
return this.id;
} public void setId(String value) {
this.id = value;
} public String getType() {
return this.type;
} public void setType(String value) {
this.type = value;
} public String getName() {
return this.name;
} public void setName(String value) {
this.name = value;
} public Coordinate getCoordinate() {
return this.coordinate;
} public void setCoordinate(Coordinate value) {
this.coordinate = value;
} public int getWidth() {
return this.width;
} public void setWidth(int value) {
this.width = value;
} public int getHeight() {
return this.height;
} public void setHeight(int value) {
this.height = value;
} }

子类3:

 import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType; /**
* Created by Leo on 2017/2/10.
*/
@XmlType(name = "Transition", propOrder = { "id", "from", "to", "name", "coordinate" })
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement()
public class Transition { @XmlAttribute(name = "Id")
private String id; @XmlAttribute(name = "From")
private String from; @XmlAttribute(name = "To")
private String to; @XmlAttribute(name = "Name")
private String name; @XmlElement(name = "Coordinates")
private Coordinate coordinate; public String getId() {
return this.id;
} public void setId(String value) {
this.id = value;
} public String getFrom() {
return this.from;
} public void setFrom(String value) {
this.from = value;
} public String getTo() {
return this.to;
} public void setTo(String value) {
this.to = value;
} public String getName() {
return this.name;
} public void setName(String value) {
this.name = value;
} public Coordinate getCoordinate() {
return this.coordinate;
} public void setCoordinate(Coordinate value) {
this.coordinate = value;
} }

Java XML 序列化和反序列化的更多相关文章

  1. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

  2. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  3. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  4. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  5. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  6. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  7. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  8. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  9. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

随机推荐

  1. leetcode — reorder-list

    /** * Source : https://oj.leetcode.com/problems/reorder-list/ * * Given a singly linked list L: L0→L ...

  2. windows编程学习笔记(三)ListBox的使用方法

    ListBox是Windows中的一种控件,一般被当做子窗口使用,Windows中所有子窗口都是通过发送一个通知码到父窗口父窗口通过WM_COMMAND消息接收,并在此消息中处理,并控制子窗口,Lis ...

  3. asp.net mvc 记录Action耗时

    可能有些时候需要记录Action的执行时间来优化系统功能,这时可以用过滤器来实现. 新建项目 项目名称随便取 身份验证:不进行身份验证 安装Nlog 这里使用NLog来输出日志,具体使用说明请看:ht ...

  4. 【读书笔记】【深入理解ES6】#5-解构:使数据访问更便捷

    ES6为对象和数组都添加了解构功能,将数据解构打散的过程变得更简单,可以从打散后更小的部分中获取所需信息. 对象解构 let node = { type: "Identifier" ...

  5. ComboBox 中 DisplayMember 和 ValueMember 都是具体干什么的?

    ComboBox组件的数据绑定,在得到数据集后,只有设定好ComboBox组件的的三个属性就可以完成数据绑定了,这三个属性是:"DisplayMember". "Valu ...

  6. es6 模板字变量和字符串占位符

    开发者一直在寻找一种创建多行字符串的形式,但要使用单引号双引号字符串一定要在同一行才行. 老办法: 还有其他办法,虽然能实现,但是太啰嗦 es6模板自变量 使用反撇好(`)替换了单双引号 反撇好中的所 ...

  7. 数据结构-栈(应用篇)之快速排序法-C和C++的实现

    一.原理解析 快速排序法: 基本思路是,从第一个元素开始,把所有比它大的元素放在它后面,把所有比它小的元素放前面.然后划分它前面和后面的所有元素,分别再做快速排序,直到无法再划分为止. 在以下程序案例 ...

  8. Zabbix Agent for Windows部署(五)

    一.环境介绍 二.软件准备 1.Zabbix官方下载地址:https://www.zabbix.com/download进入Zabbix pre-compiled agents项,下载相应版本 2.将 ...

  9. 整理C++面试题for非CS程序猿——更新至【48】

    结合网上的C++面试题+自己的面经,进行整理记录,for我这种非CS的程序猿.(不定期更新,加入了自己的理解,如有不对,请指出) [1] new/delete和malloc/free的区别和联系? 1 ...

  10. python写zip破解器

    浏览桌面依然平静,!!!!等等..怎么有个压缩包 打开一看!!!156.txt???waht the fuck? 卧槽还有密码!!!!!! 但是我不知道╮(╯▽╰)╭该怎么办呢! 很简单,python ...