當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring OXM-XStream流化对象
生活随笔
收集整理的這篇文章主要介紹了
Spring OXM-XStream流化对象
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 概述
- 示例
- 示例源碼
概述
XStream為java.io.ObjectInputStream和ObjectOutputStream提供了替代的實現,允許以對象流方式進行XML序列化或者反序列化操作。
這對于處理集合對象非常有用(List<User> users),在內存中只保留一個User對象流。很顯然,我們應該使用基于流而非DOM的XML解析器讀取XML,以提高性能。
創建一個輸出流,我們不得不提到HierarchicalStreamWriter. 它是一個接口,字面意思就是層級關系的輸出流。 XStream默認提供了幾個常用的實現類用于輸出,比如CompactWriter和PrettyPrintWriter。
示例
package com.xgj.oxm.xstream.quickDemo.streamObject;import java.io.BufferedReader; import java.io.FileReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.PrintWriter; import java.util.Date;import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; import com.xgj.oxm.xstream.quickDemo.domain.LoginLog; import com.xgj.oxm.xstream.quickDemo.domain.User;public class ObjectStreamDemo {private static XStream xstream;static {xstream = new XStream();}/*** * * @Title: objectToXml* * @Description: JAVA對象轉化為XML* * @throws Exception* * @return: void*/public void objectToXml() throws Exception {// (1)實例化序列化對象User user = getUser();// (2)創建一個PrintWriter對象,用于輸出。PrintWriter pw = new PrintWriter("D:\\ObjectStreamSample.xml");// (3)創建一個HierarchicalStreamWriter的實現類來創建輸出PrettyPrintWriter ppw = new PrettyPrintWriter(pw);// (4)創建對象輸出流ObjectOutputStream out = xstream.createObjectOutputStream(ppw);out.writeObject(user);out.close();}/*** * * @Title: xmlToObject* * @Description: XML轉化為JAVA對象* * @return* @throws Exception* * @return: User*/public User xmlToObject() throws Exception {// (1)我們需要通過對象流進行輸入操作,需要FileReader和BufferedReaderFileReader fr = new FileReader("D:\\ObjectStreamSample.xml");BufferedReader br = new BufferedReader(fr);//(2)創建對象輸入流ObjectInputStream input = xstream.createObjectInputStream(br);// (3)創建對象,通過ObjectInputStream中的readObject()方法將對象從XML文件中讀取出來。User user = (User) input.readObject();return user;}/*** * * @Title: getUser* * @Description: 初始化轉換對象* * @return* * @return: User*/public static User getUser() {LoginLog log1 = new LoginLog();LoginLog log2 = new LoginLog();log1.setIp("192.168.1.91");log1.setLoginDate(new Date());log2.setIp("192.168.1.92");log2.setLoginDate(new Date());User user = new User();user.setId(1);user.setUserName("xstream");user.addLoginLog(log1);user.addLoginLog(log2);return user;}public static void main(String[] args) throws Exception {ObjectStreamDemo converter = new ObjectStreamDemo();converter.objectToXml();User u = converter.xmlToObject();for (LoginLog log : u.getLogs()) {if (log != null) {System.out.println("訪問IP: " + log.getIp());System.out.println("訪問時間: " + log.getLoginDate());}}}}示例源碼
代碼已托管到Github—> https://github.com/yangshangwei/SpringMaster
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Spring OXM-XStream流化对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring OXM-XStream注解
- 下一篇: Spring MVC-01循序渐进之Mo