`
flowercat
  • 浏览: 358677 次
社区版块
存档分类
最新评论

使用xStream实现xml与java对象之间的转换

阅读更多
    在研究elchat的时候发现它使用了xStream将聊天信息保存到xml文件中。查看了他的源代码,发现使用起来比Digester方便快捷多了。以后保存对象又多了一件武器了
elchat中读取xml转java对象以及持久化java对象到xml文件代码如下:
static MessageDatabase load(String persistFile) {
        MessageDatabase messageDatabase = null;
        Reader reader = null;

        try {
            reader = new FileReader(persistFile);
            XStream xstream = new XStream(new JDomDriver());
            messageDatabase = (MessageDatabase) xstream.fromXML(reader);

            // for upgrade
            if (messageDatabase != null) {
                messageDatabase.upgrade();
            }
        }
        catch (FileNotFoundException ex) {
            ;
        }
        finally {
            if (reader != null) {
                try {
                    reader.close();
                }
                catch (IOException ex) {
                    log.warn("Exception when closing reader", ex);
                }
            }
        }

        if (messageDatabase == null) {
            messageDatabase = new MessageDatabase();
            messageDatabase.setMessages(new LinkedList());
            messageDatabase.setStickyMessages(new LinkedList());
        }

        messageDatabase.persistFile = persistFile;

        return messageDatabase;
    }
    void persist() {
        FileWriter writer = null;
        try {
            writer = new FileWriter(persistFile);
            XStream xstream = new XStream();
            xstream.toXML(this, writer);
        }
        catch (IOException ex) {
            log.warn("fail to persist " + persistFile, ex);
        }
        finally {
            if (writer != null) {
                try {
                    writer.close();
                }
                catch (IOException ex) {
                    log.warn("Exception when closing writer", ex);
                }
            }
        }
    }


xStream详见http://xstream.codehaus.org/
分享到:
评论
3 楼 dingwenming 2009-03-18  
2 楼 yza0088 2008-05-27  
不错,正好用的上.
1 楼 babymouse 2007-06-07  
请教下楼主~elchat里面的粘性信息我不是很理解~
你有没有研究?

相关推荐

Global site tag (gtag.js) - Google Analytics