激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java對(duì)象的XML序列化與反序列化實(shí)例解析

Java對(duì)象的XML序列化與反序列化實(shí)例解析

2021-01-22 11:28狐帝 Java教程

這篇文章主要介紹了Java對(duì)象的XML序列化與反序列化實(shí)例解析,小編覺得還是挺不錯(cuò)的,這里分享給大家。

上一篇文章我們介紹了java實(shí)現(xiàn)的各種排序算法代碼示例,本文我們看看Java對(duì)象的xml序列化反序列化的相關(guān)內(nèi)容,具體如下。

XML是一種標(biāo)準(zhǔn)的數(shù)據(jù)交換規(guī)范,可以方便地用于在應(yīng)用之間交換各類數(shù)據(jù)。如果能在Java對(duì)象和XML文檔之間建立某種映射,例如Java對(duì)象的XML序列化和反序列化,那么就可以使Java的對(duì)象方便地與其他應(yīng)用進(jìn)行交換。

java.beans包里面有兩個(gè)類XMLEncoder和Decoder,分別用于將符合JabaBeans規(guī)范的Java對(duì)象以XML方式序列化和反序列化。以下代碼顯示了如何使用這兩個(gè)類實(shí)現(xiàn)Java對(duì)象的XML編碼和解碼。

待序列化的Java類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.Serializable;
public class SerialableObject implements Serializable
{
    private static final long serialVersionUID = 8745578444312339136L;
    public SerialableObject()
      {
    }
    public SerialableObject(int id, String name, double value)
      {
        this.id = id;
        this.name = name;
        this.value = value;
    }
    public int getId()
      {
        return id;
    }
    public void setId(int id)
      {
        this.id = id;
    }
    public String getName()
      {
        return name;
    }
    public void setName(String name)
      {
        this.name = name;
    }
    public double getValue()
      {
        return value;
    }
    public void setValue(double value)
      {
        this.value = value;
    }
    private int id;
    private String name;
    private double value;
}

XML序列化和反序列化用法演示類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Vector;
public class XmlSerialize
{
    public XmlSerialize()
      {
    }
    public void serializeSingleObject(OutputStream os, Object obj)    // 序列化單個(gè)java對(duì)象
    {
        // XMLEncoder xe = new XMLEncoder(os);
        XMLEncoder xe = new XMLEncoder(os, "GBK", true, 0);
        // 僅用于Java SE 7
        xe.writeObject(obj);
        // 序列化成XML字符串
        xe.close();
    }
    public Object deserializeSingleObject(InputStream is)    // 反序列化單個(gè)Java對(duì)象
    {
        XMLDecoder xd = new XMLDecoder(is);
        Object obj = xd.readObject();
        // 從XML序列中解碼為Java對(duì)象
        xd.close();
        return obj;
    }
    public void serializeMultipleObject(OutputStream os, List<Object> objs)    // 序列化多個(gè)Java對(duì)象
    {
        XMLEncoder xe = new XMLEncoder(os);
        xe.writeObject(objs);
        // 序列化成XML字符串
        xe.close();
    }
    public List<Object> deserializeMultipleObject(InputStream is)    // 反序列化多個(gè)Java對(duì)象
    {
        XMLDecoder xd = new XMLDecoder(is);
        @SuppressWarnings("unchecked")
           List<Object> objs = (List<Object>)xd.readObject();
        // 從XML序列中解碼為Java對(duì)象列表
        xd.close();
        return objs;
    }
    public void runSingleObject()
      {
        File xmlFile = new File("object.xml");
        SerialableObject jo4Out = new SerialableObject(1, "Java序列化為XML", 3.14159265359);
        // 創(chuàng)建待序列化的對(duì)象
        try
           {
            FileOutputStream ofs = new FileOutputStream(xmlFile);
            // 創(chuàng)建文件輸出流對(duì)象
            serializeSingleObject(ofs, jo4Out);
            ofs.close();
        }
        catch (FileNotFoundException e)
           {
            e.printStackTrace();
        }
        catch (IOException e)
           {
            e.printStackTrace();
        }
        try
           {
            FileInputStream ifs = new FileInputStream(xmlFile);
            SerialableObject jo4In = (SerialableObject)deserializeSingleObject(ifs);
            System.out.println("id: " + jo4In.getId());
            System.out.println("name: " + jo4In.getName());
            System.out.println("value: " + jo4In.getValue());
        }
        catch (FileNotFoundException e)
           {
            e.printStackTrace();
        }
    }
    public void runMultipleObject()
      {
        File xmlFile = new File("objects.xml");
        List<SerialableObject> sos4Out = new Vector<SerialableObject>();
        sos4Out.add(new SerialableObject(1, "Java序列化為XML - 1", 3.14));
        // 創(chuàng)建待序列化的對(duì)象
        sos4Out.add(new SerialableObject(2, "Java序列化為XML - 2", 3.14159));
        // 創(chuàng)建待序列化的對(duì)象
        sos4Out.add(new SerialableObject(3, "Java序列化為XML - 3", 3.1415926));
        // 創(chuàng)建待序列化的對(duì)象
        sos4Out.add(new SerialableObject(4, "Java序列化為XML - 4", 3.141592653));
        // 創(chuàng)建待序列化的對(duì)象
        sos4Out.add(new SerialableObject(5, "Java序列化為XML - 5", 3.14159265359));
        // 創(chuàng)建待序列化的對(duì)象
        try
           {
            FileOutputStream ofs = new FileOutputStream(xmlFile);
            // 創(chuàng)建文件輸出流對(duì)象
            serializeSingleObject(ofs, sos4Out);
            ofs.close();
        }
        catch (FileNotFoundException e)
           {
            e.printStackTrace();
        }
        catch (IOException e)
           {
            e.printStackTrace();
        }
        try
           {
            FileInputStream ifs = new FileInputStream(xmlFile);
            @SuppressWarnings("unchecked")
                 List<SerialableObject> sos4In = (List<SerialableObject>)deserializeSingleObject(ifs);
            for (SerialableObject jo4In : sos4In)
                 {
                System.out.println("id: " + jo4In.getId());
                System.out.println("name: " + jo4In.getName());
                System.out.println("value: " + jo4In.getValue());
            }
        }
        catch (FileNotFoundException e)
           {
            e.printStackTrace();
        }
    }
    public static void main(String[] args)
      {
        XmlSerialize xs = new XmlSerialize();
        xs.runSingleObject();
        xs.runMultipleObject();
    }
}

需要注意的是,待序列化的類必須要符合JavaBeans的格式規(guī)范,即:具有一個(gè)無參的public構(gòu)造函數(shù),所有數(shù)據(jù)成員的訪問均采用getter/setter模式,此外,這個(gè)類必須是public的,并且實(shí)現(xiàn)了java.io.Serializable接口。

程序運(yùn)行之后,會(huì)產(chǎn)生兩個(gè)文件:

object.xml是runSingleObject方法生成的,存放了單個(gè)的SerialableObject的值:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="GBK"?>
<java version="1.7.0" class="java.beans.XMLDecoder">
 <object class="SerialableObject">
 <void property="id">
  <int>1</int>
 </void>
 <void property="name">
  <string>Java序列化為XML</string>
 </void>
 <void property="value">
  <double>3.14159265359</double>
 </void>
 </object>
</java>

objects.xml是runMultipleObject方法產(chǎn)生的,存放了5個(gè)SerializableObject的值:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?xml version="1.0" encoding="GBK"?>
<java version="1.7.0" class="java.beans.XMLDecoder">
 <object class="java.util.Vector">
 <void method="add">
  <object class="SerialableObject">
  <void property="id">
   <int>1</int>
  </void>
  <void property="name">
   <string>Java序列化為XML - 1</string>
  </void>
  <void property="value">
   <double>3.14</double>
  </void>
  </object>
 </void>
 <void method="add">
  <object class="SerialableObject">
  <void property="id">
   <int>2</int>
  </void>
  <void property="name">
   <string>Java序列化為XML - 2</string>
  </void>
  <void property="value">
   <double>3.14159</double>
  </void>
  </object>
 </void>
 <void method="add">
  <object class="SerialableObject">
  <void property="id">
   <int>3</int>
  </void>
  <void property="name">
   <string>Java序列化為XML - 3</string>
  </void>
  <void property="value">
   <double>3.1415926</double>
  </void>
  </object>
 </void>
 <void method="add">
  <object class="SerialableObject">
  <void property="id">
   <int>4</int>
  </void>
  <void property="name">
   <string>Java序列化為XML - 4</string>
  </void>
  <void property="value">
   <double>3.141592653</double>
  </void>
  </object>
 </void>
 <void method="add">
  <object class="SerialableObject">
  <void property="id">
   <int>5</int>
  </void>
  <void property="name">
   <string>Java序列化為XML - 5</string>
  </void>
  <void property="value">
   <double>3.14159265359</double>
  </void>
  </object>
 </void>
 </object>
</java>

總結(jié)

以上就是本文關(guān)于Java對(duì)象的XML序列化與反序列化實(shí)例解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。什么問題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。

原文鏈接:http://blog.csdn.net/kingfox/article/details/8087103

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 精品不卡 | 毛片118极品美女写真 | 国产毛片自拍 | 国产精品久久久久久久久久久久久久久久 | 国产va在线观看 | 亚洲国产二区 | 国产午夜精品久久久久 | 毛片区| 欧美成人性色 | 成人免费观看毛片 | 免费观看亚洲视频 | 7777网站 | 日韩欧美电影一区二区三区 | 视频一区二区国产 | 一级片免费 | 国产精品久久久久久238 | 羞羞网站 | 日本在线视频二区 | 成人综合在线观看 | 国产精品免费大片 | 亚洲第一男人天堂 | 欧美在线观看黄色 | 黄污网站在线 | 免费在线国产精品 | 最新91在线视频 | 亚洲天堂岛国片 | 一区二区三区在线观看av | 中文字幕一区久久 | 成人在线免费观看小视频 | 午夜精品成人一区二区 | 久草在线最新 | 免费视频一区 | 日本一道aⅴ不卡免费播放 久久久久久久高清 | 在线无码| 精品一区二区三区在线视频 | 国产精品久久久久久影视 | 国产超碰人人爽人人做人人爱 | 成熟女人特级毛片www免费 | 中国一级免费视频 | 久久逼逼| 日本精品久久久一区二区三区 |