我是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是否适合在这里使用,有什么更好的方法可以用来实现这一点。非常感谢您的帮助!
答案 0 :(得分:0)
编写单个对象并阅读列表将不起作用。要了解原因,请在一个文件中使用toXml
编写一些对象,并在另一个文件中写入List
个对象并比较两者。
但是,逐个阅读单个对象并将其添加到列表中应该相当容易,
create list
while (read object using fromXml)
add to list
答案 1 :(得分:0)
您可以使用标准Java XMLEncoder和XMLDecoder类。它们与对象输入和输出流一样易于使用,并且可以使用getter和setter为任何应该预先设置的属性编写任何对象,也可以使用集合以及同一个流的多个对象。缺点是它们生成和读取的XML对人类来说很难理解。
如果你逐个手动编写对象,你还需要逐个读取它们,直到得到ArrayIndexOutOfBoundsException(一个有趣的事件来检测EOF,但这就是它的记录方式)。你不能在一次调用中加载整个集合,但是一个简单的循环在这里看起来并不复杂,你最后得到了你的ArrayList。