国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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í)例解析的全部內(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 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩精品在线一区 | 在线观看av片 | 久久亚洲一区二区 | 黄视频在线免费看 | 色官网| 亚洲成人av一区二区三区 | 国产精品美女久久久久久久久久久 | 99久久夜色精品国产网站 | 中文字幕视频在线 | 成年人免费网站 | 久在线视频| 日韩欧美在线视频 | 无毒黄网 | 久久66 | 免费一级片在线观看 | 国产在线精品视频 | 久久久久久国产精品高清 | 欧美精品v国产精品v日韩精品 | 日韩在线电影 | 激情毛片| 黄色国产片 | 嫩草视频免费在线观看 | 国产精品一二三区视频出来一 | 在线免费黄色网址 | 国产精品毛片一区二区 | 国产精品久久久久久久久久东京 | 99热69| 亚洲精品电影在线观看 | 久久久久久亚洲精品 | 黄色毛片a | 九九精品在线 | 午夜电影| 荷兰欧美一级毛片 | 久久噜 | 国产精品99一区二区三区 | 国产精品亚洲一区二区三区在线 | 国产精品成人国产乱一区 | 亚洲精品1 | 五月天婷婷国产精品 | 亚洲综合色视频在线观看 | 希岛爱理一区二区三区av高清 |