Java XML 序列化和反序列化

java

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

以上是 Java XML 序列化和反序列化 的全部内容, 来源链接: utcz.com/z/394108.html

回到顶部