在xml中逐个存储对象并将其作为ArrayList读取

时间:2013-02-15 19:20:11

标签: java xml xstream

我是xml-object转换的新手。我目前正在使用xstream。

我的问题是,有什么方法可以将对象一个一个地存储在xml中,如同在末尾附加,并且在读取时将它们作为数组列表读取。

基本上我有一个xml文件

<person>
    <firstname>Joe</firstname>
    <lastname>Walnes</lastname>
    <phone>
        <code>123</code>
        <number>1234-456</number>
    </phone>
    <fax>
        <code>123</code>
        <number>9999-999</number>
    </fax>
</person>
<person>
    <firstname>Joe</firstname>
    <lastname>Walnes</lastname>
    <phone>
        <code>123</code>
        <number>1234-456</number>
    </phone>
    <fax>
        <code>123</code>
        <number>9999-999</number>
    </fax>
</person>

我希望能够做到

List<Person> persons = (ArrayLIst<Person()>)xstream.fromXML(xml);

xstream是否适合在这里使用,有什么更好的方法可以用来实现这一点。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

编写单个对象并阅读列表将不起作用。要了解原因,请在一个文件中使用toXml编写一些对象,并在另一个文件中写入List个对象并比较两者。

但是,逐个阅读单个对象并将其添加到列表中应该相当容易,

create list
while (read object using fromXml)
  add to list

答案 1 :(得分:0)

您可以使用标准Java XMLEncoderXMLDecoder类。它们与对象输入和输出流一样易于使用,并且可以使用getter和setter为任何应该预先设置的属性编写任何对象,也可以使用集合以及同一个流的多个对象。缺点是它们生成和读取的XML对人类来说很难理解。

如果你逐个手动编写对象,你还需要逐个读取它们,直到得到ArrayIndexOutOfBoundsException(一个有趣的事件来检测EOF,但这就是它的记录方式)。你不能在一次调用中加载整个集合,但是一个简单的循环在这里看起来并不复杂,你最后得到了你的ArrayList。

相关问题