• Java XML 序列化和反序列化


    Utils 类:

     1 import java.io.FileInputStream;
     2 import java.io.FileNotFoundException;
     3 import java.io.FileWriter;
     4 import java.io.InputStreamReader;
     5 import java.io.Serializable;
     6 import java.io.UnsupportedEncodingException;
     7 
     8 import javax.xml.bind.JAXBContext;
     9 import javax.xml.bind.JAXBException;
    10 import javax.xml.bind.Marshaller;
    11 import javax.xml.bind.Unmarshaller;
    12 
    13 /**
    14  * Created by Leo on 2017/2/10.
    15  */
    16 public class XmlUtils {
    17     @SuppressWarnings({ "unchecked", "rawtypes" })
    18     public static <T extends Serializable> T deserialize(String xmlFilePath, Class clazz)
    19             throws FileNotFoundException, JAXBException, UnsupportedEncodingException {
    20         JAXBContext context = JAXBContext.newInstance(clazz);
    21         Unmarshaller unmarshal = context.createUnmarshaller();
    22         FileInputStream fis = new FileInputStream(xmlFilePath);
    23         InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
    24         return (T) unmarshal.unmarshal(isr);
    25     }
    26 
    27     public static <T> void serialize(T obj, String xmlFilePath) {
    28         FileWriter writer = null;
    29         try {
    30             JAXBContext context = JAXBContext.newInstance(obj.getClass());
    31             Marshaller marshal = context.createMarshaller();
    32             marshal.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    33             marshal.marshal(obj, System.out);
    34             writer = new FileWriter(xmlFilePath);
    35             marshal.marshal(obj, writer);
    36         } catch (Exception e) {
    37             e.printStackTrace();
    38         }
    39     }
    40 
    41 }
    View Code

    根目录对应的类:

     1 import javax.xml.bind.annotation.XmlElement;
     2 import javax.xml.bind.annotation.XmlRootElement;
     3 import java.io.Serializable;
     4 import java.util.*;
     5 
     6 /**
     7  * Created by Leo on 2017/2/10.
     8  */
     9 @XmlRootElement(name = "WorkflowProcesses")
    10 public class WorkflowProcessList implements Serializable {
    11 
    12     @XmlElement(name = "WorkflowProcess")
    13     private List<WorkflowProcess> items;
    14 
    15     public WorkflowProcessList() {
    16         this.items = new ArrayList<WorkflowProcess>();
    17     }
    18 
    19     public void addProcess(WorkflowProcess process) {
    20         this.items.add(process);
    21     }
    22 
    23     public Iterator<WorkflowProcess> iterator() {
    24         return items.iterator();
    25     }
    26 
    27     public List<WorkflowProcess> getItems() {
    28         return this.items;
    29     }
    30 
    31 }
    View Code

    子类:

     1 import java.io.Serializable;
     2 import java.util.ArrayList;
     3 import java.util.List;
     4 
     5 import javax.xml.bind.annotation.XmlAccessType;
     6 import javax.xml.bind.annotation.XmlAccessorType;
     7 import javax.xml.bind.annotation.XmlAttribute;
     8 import javax.xml.bind.annotation.XmlElement;
     9 import javax.xml.bind.annotation.XmlElementWrapper;
    10 import javax.xml.bind.annotation.XmlRootElement;
    11 import javax.xml.bind.annotation.XmlType;
    12 
    13 @XmlType(propOrder = { "id", "name", "activities", "transitions" })
    14 @XmlAccessorType(XmlAccessType.FIELD)
    15 @XmlRootElement(name = "wp")
    16 public class WorkflowProcess implements Serializable {
    17 
    18     @XmlAttribute(name = "Id")
    19     private String id;
    20 
    21     @XmlAttribute(name = "Name")
    22     private String name;
    23 
    24     @XmlElementWrapper(name = "Activities")
    25     @XmlElement(name = "Activity")
    26     private List<Activity> activities;
    27 
    28     @XmlElementWrapper(name = "Transitions")
    29     @XmlElement(name = "Transition")
    30     private List<Transition> transitions;
    31 
    32     public WorkflowProcess() {
    33         this.activities = new ArrayList<Activity>();
    34         this.transitions = new ArrayList<Transition>();
    35     }
    36 
    37     public String getName() {
    38         return this.name;
    39     }
    40 
    41     public void setName(String value) {
    42         this.name = value;
    43     }
    44 
    45     public String getId() {
    46         return this.id;
    47     }
    48 
    49     public void setId(String value) {
    50         this.id = value;
    51     }
    52 
    53     public void addActivity(Activity activity) {
    54         this.activities.add(activity);
    55     }
    56 
    57     public List<Activity> getActivities() {
    58         return this.activities;
    59     }
    60 
    61     public List<Transition> getTransitions() {
    62         return this.transitions;
    63     }
    64 
    65 }
    View Code

    子类2:

     1 import java.io.Serializable;
     2 
     3 import javax.xml.bind.annotation.XmlAccessType;
     4 import javax.xml.bind.annotation.XmlAccessorType;
     5 import javax.xml.bind.annotation.XmlAttribute;
     6 import javax.xml.bind.annotation.XmlElement;
     7 import javax.xml.bind.annotation.XmlRootElement;
     8 import javax.xml.bind.annotation.XmlType;
     9 
    10 /**
    11  * Created by Leo on 2017/2/10.
    12  */
    13 @XmlType(name = "Activity", propOrder = { "id", "type", "name", "width", "height", "coordinate" })
    14 @XmlAccessorType(XmlAccessType.FIELD)
    15 @XmlRootElement
    16 public class Activity implements Serializable {
    17 
    18     @XmlAttribute(name = "Id")
    19     private String id;
    20 
    21     @XmlAttribute(name = "Type")
    22     private String type;
    23 
    24     @XmlAttribute(name = "Name")
    25     private String name;
    26 
    27     @XmlAttribute(name = "Width")
    28     private int width;
    29 
    30     @XmlAttribute(name = "Height")
    31     private int height;
    32 
    33     @XmlElement(name = "Coordinates")
    34     private Coordinate coordinate;
    35 
    36     public Activity() {
    37 
    38     }
    39 
    40     public Activity(String id, String type, String name) {
    41         this.id = id;
    42         this.type = type;
    43         this.name = name;
    44     }
    45 
    46     public String getId() {
    47         return this.id;
    48     }
    49 
    50     public void setId(String value) {
    51         this.id = value;
    52     }
    53 
    54     public String getType() {
    55         return this.type;
    56     }
    57 
    58     public void setType(String value) {
    59         this.type = value;
    60     }
    61 
    62     public String getName() {
    63         return this.name;
    64     }
    65 
    66     public void setName(String value) {
    67         this.name = value;
    68     }
    69 
    70     public Coordinate getCoordinate() {
    71         return this.coordinate;
    72     }
    73 
    74     public void setCoordinate(Coordinate value) {
    75         this.coordinate = value;
    76     }
    77 
    78     public int getWidth() {
    79         return this.width;
    80     }
    81 
    82     public void setWidth(int value) {
    83         this.width = value;
    84     }
    85 
    86     public int getHeight() {
    87         return this.height;
    88     }
    89 
    90     public void setHeight(int value) {
    91         this.height = value;
    92     }
    93 
    94 }
    View Code

    子类3:

     1 import javax.xml.bind.annotation.XmlAccessType;
     2 import javax.xml.bind.annotation.XmlAccessorType;
     3 import javax.xml.bind.annotation.XmlAttribute;
     4 import javax.xml.bind.annotation.XmlElement;
     5 import javax.xml.bind.annotation.XmlRootElement;
     6 import javax.xml.bind.annotation.XmlType;
     7 
     8 /**
     9  * Created by Leo on 2017/2/10.
    10  */
    11 @XmlType(name = "Transition", propOrder = { "id", "from", "to", "name", "coordinate" })
    12 @XmlAccessorType(XmlAccessType.FIELD)
    13 @XmlRootElement()
    14 public class Transition {
    15 
    16     @XmlAttribute(name = "Id")
    17     private String id;
    18 
    19     @XmlAttribute(name = "From")
    20     private String from;
    21 
    22     @XmlAttribute(name = "To")
    23     private String to;
    24 
    25     @XmlAttribute(name = "Name")
    26     private String name;
    27 
    28     @XmlElement(name = "Coordinates")
    29     private Coordinate coordinate;
    30 
    31     public String getId() {
    32         return this.id;
    33     }
    34 
    35     public void setId(String value) {
    36         this.id = value;
    37     }
    38 
    39     public String getFrom() {
    40         return this.from;
    41     }
    42 
    43     public void setFrom(String value) {
    44         this.from = value;
    45     }
    46 
    47     public String getTo() {
    48         return this.to;
    49     }
    50 
    51     public void setTo(String value) {
    52         this.to = value;
    53     }
    54 
    55     public String getName() {
    56         return this.name;
    57     }
    58 
    59     public void setName(String value) {
    60         this.name = value;
    61     }
    62 
    63     public Coordinate getCoordinate() {
    64         return this.coordinate;
    65     }
    66 
    67     public void setCoordinate(Coordinate value) {
    68         this.coordinate = value;
    69     }
    70 
    71 }
    View Code
  • 相关阅读:
    BZOJ_3171_[Tjoi2013]循环格_最小费用最大流
    BZOJ_1150_[CTSC2007]数据备份Backup_堆+贪心
    BZOJ_1576_[Usaco2009 Jan]安全路经Travel&&BZOJ_3694_最短路_树链剖分+线段树
    BZOJ_4802_欧拉函数_MR+pollard rho+欧拉函数
    BZOJ_3667_Rabin-Miller算法_Mille_Rabin+Pollard rho
    BZOJ_1584_[Usaco2009 Mar]Cleaning Up 打扫卫生_DP
    BZOJ_1229_[USACO2008 Nov]toy 玩具_三分+贪心
    BZOJ_2160_拉拉队排练_manacher
    [转载]Linux软件包及dpkgapt等方法
    服务器基础认知杂谈及一小点运维相关
  • 原文地址:https://www.cnblogs.com/leotsai/p/java-xml-serializer.html
Copyright © 2020-2023  润新知