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. [js高手之路]从零开始打造一个javascript开源框架gdom与插件开发免费视频教程连载中

    百度网盘下载地址:https://pan.baidu.com/s/1kULNXOF 优酷土豆观看地址:http://v.youku.com/v_show/id_XMzAwNTY2MTE0MA==.ht ...

  2. TPYBoard读取芯片上的温度传感器

    转载请以链接形式注明文章来源,公众号:MicroPython玩家汇 一.STM32内部温度传感器概要 STM32芯片内部一项独特的功能就是内部集成了一个温度传感器,因为是内置,所以测试的是芯片内部的温 ...

  3. springmvc 访问时找不到配置文件

    运行tomcat时一切正常,访问时报了init()错误,后台报的是fileNotFoundException,原因时找不到spring的配置文件,web.xml主要配置如下 <!-- sprin ...

  4. Watch time

    Stopwatch watch = new Stopwatch(); watch.Start(); ; i <= ; i++) { ; j <= ; j++) { ; k <= ; ...

  5. 从Unity中的Attribute到AOP(三)

    上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeU ...

  6. js中var,let,const理解

    var变量提升: 解释:在声明a之前输出a,因为a是使用var声明变量得到提升,解释为下句 var a: console.log(a) a = 1; var声明会提到最上面的位置,但是赋值的位置还是当 ...

  7. Java分布式应用技术架构

    分布式架构的演进 系统架构演化历程-初始阶段架构初始阶段 的小型系统 应用程序.数据库.文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序.数据库.文件等所有的资源都在一台服务器上.描述: ...

  8. 进入docker登录psql数据库对特定表进行操作

    查看docker镜像 docker ps 运行镜像的脚本命令 docker exec -it 08 bash # 选择id为08开头的镜像运行bash 登录数据库 (1)直接登录 执行命令:psql ...

  9. web.xml解析

    常用元素及含义 <!-- standalone 定义了外部定义的 DTD 文件的存在性,有效值是 yes和 no --> <?xml version="1.0" ...

  10. 关于mybatis-generator的问题

    1.运行完mybatis-generator没有出现问题,但是代码看不到,出现这种东西: 你需要使用相对路径,如项目名+/src/main/java,就可以解决了 2.附录我的代码以供参考: < ...