日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML格式对象序列化(2)

發布時間:2025/4/5 asp.net 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML格式对象序列化(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??

XStreamJava.BeanXML工具的比較

?

???????XStream主要作用是將序列化的對象轉化為一個XML文件或將XML文件解析為一個對象。當然并非只有它可以做到,很多其它工具一樣可以,在Java中存在這樣兩個類XMLDecoderXMLEncoder,它們是在Java.Bean包下的,它們的作用是將JavaBean轉化為XML或將XML文件轉化為一個Java Bean

???????XMLDecoder是通過一個輸入流將對象從輸入流中取出并轉化為一個實例的方法。它所需要的就是一個輸入流及一個轉化過程。

?

???????XMLDecoder的實例:

?

???????String fileStr=”xstream.xml”;//XML文件,在本目錄下,延用上次使用文件。

???????ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileStr));//創建一個ObjectInputStream用于輸入。

???????XMLDecoder xmld=new XMLDecoder(in);//創建一個XMLDecoder對象。

???????延用前面所使用PrintUnit這個Bean

???????PrintUnit pu=(PrintUnit)xmld.readObject();//通過XMLDecoder中的readObject方法獲得PrintUnit對象。

如果獲取到了這個對象那么pu中將有它的值a=A11,b=B22,c=C33。整個過程最好放try

…catch中去,能夠捕獲一些如:文件不存在等異常。

???????從操作方式上看XMLDecoder似乎不比XStream差多少,同樣是可以通過ObjectInputStream獲取XML文件中的對象。它們的差異就是解析的方式不同,XMLDecoder是使用Java自帶的XML解析方式,而XStream則是可以自定義的,它可以使用多中方式進行解析。這些是我個人所發現的一些不同點。

?

???????XMLEncoder是通過一個輸出流將對象序列化并輸出為XML文件。它所需要的是一個輸出流及一個輸出方式。

?

???????XMLEncoder的實例:

?

???????String fileStr=”xstream.xml”;//定義一個輸入的目標文件。

???????ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileStr));//創建一個對象輸出流。

???????XMLEncoder xmle=new XMLEncoder(out);//創建一個XMLEncoder對象。

???????延用前面所使用PrintUnit這個Bean

//創建并初始化PrintUnit對象。

PrintUnit pu=new PrintUnit();

pu.setA(“AAA”);

pu.setB(“BBB”);

pu.setC(“CCC”);

?

???????xmle.writeObject(pu);//使用XMLEncodewriteObject方法輸出pu

???????xmle.flush();//刷新

???????xmle.close();//關閉輸出流

?

???????從上面的代碼不難看出,使用XMLEncode方式將對象序列化并輸出也是很方便的,簡單調用writeObject方法能將普通Bean輸出為XML文件。

??????

???????XML文件的內容:

?

�_?<?xml?version="1.0"?encoding="UTF-8"?>

<java?version="1.5.0"?class="java.beans.XMLDecoder">

?<object?class="test.PrintUnit">

??<void?property="a">

???<string>AAA</string>

??</void>

??<void?property="b">

???<string>BBB</string>

??</void>

??<void?property="c">

???<string>CCC</string>

??</void>

?</object>

w???</java>

?

???????不知道是我哪里沒有處理,還是實際并不是像我想象的哪么簡單,使用XMLEncoder所輸出的XML文件中有一定的問題,雖然它很詳細,比起XStream所生成的更多,包括了XMLJava的版本看上去更像是個完整的XML文件,不過再細看它們兩生成的XML格式內容,完全不同,這個我想就是它們最大的區別。這讓我想到了很多內容:工作方式,解析器,轉換方式等。大家有沒發現在開始和結束都存在一些亂碼數據,難道在XMLEncoder輸出過程中或數據轉換中內容已經存在“臟”數據了?還是我所使用的輸出方式存在問題?哎一個又一個問題出現了。我想我需要再進一步的研究和學習才能得到答案。

???????不過盡管有這個那個的問題,使用Java本身自帶的XML工具還是一樣很實用的,讀取和輸出一樣可用,操作也很靈活。因此我覺得在某些場合使用特定的工具可能會更好,利用XMLEncoderXMLDecoder同樣可以解決一些問題。

?

?

XStream 有三個突出的優點:

  • XStream 不關心序列化/逆序列化的類的字段的可見性。
  • 序列化/逆序列化類的字段不需要 getter 和 setter 方法。
  • 序列化/逆序列化的類不需要有默認構造函數。
  • 不需要修改類,使用 XStream 就能直接序列化/逆序列化任何第三方類。

    ?

    轉載于:https://blog.51cto.com/jianshusoft/760678

    總結

    以上是生活随笔為你收集整理的XML格式对象序列化(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。