0

我是 xml 对象转换的新手。我目前正在使用 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 是否适合在这里使用,有什么更好的方法可以用来实现这一点。非常感谢您的帮助!

4

2 回答 2

0

您可以使用标准的 Java XMLEncoderXMLDecoder类。它们与对象输入和输出流一样易于使用,并且可以将任何带有 getter 和 setter 的对象写入应保留的属性、集合以及多个对象到同一流中。缺点是它们生成和读取的 XML 对于人类来说相当难以理解。

如果您一个一个地手动编写对象,您还需要一个一个地读取它们,直到得到 ArrayIndexOutOfBoundsException(检测 EOF 的有趣事件,但这是它的记录方式)。您不能在一次调用中加载整个集合,但一个微不足道的循环在这里似乎并不复杂,最后您会得到 ArrayList。

于 2013-02-15T20:24:38.843 回答
0

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

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

create list
while (read object using fromXml)
  add to list
于 2013-02-15T19:39:56.200 回答