Java 在xml中逐个存储对象并将其作为ArrayList读取
我是xml对象转换的新手。我目前正在使用xstream 我的问题是,是否有任何方法可以将对象一个接一个地存储在xml中,就像在末尾的append中一样,并将它们作为数组列表读取 基本上我有一个xml文件作为Java 在xml中逐个存储对象并将其作为ArrayList读取,java,xml,xstream,Java,Xml,Xstream,我是xml对象转换的新手。我目前正在使用xstream 我的问题是,是否有任何方法可以将对象一个接一个地存储在xml中,就像在末尾的append中一样,并将它们作为数组列表读取 基本上我有一个xml文件作为 <person> <firstname>Joe</firstname> <lastname>Walnes</lastname> <phone> <code>123<
<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);
List persons=(ArrayLIst)xstream.fromXML(xml);
在这里使用xstream是否正确,是否有更好的方法可以实现这一点。非常感谢你的帮助 写入单个对象和读取列表将不起作用。要了解原因,请在一个文件中使用
toXml
编写几个对象,然后在另一个文件中编写对象的列表
,并将两者进行比较
但是,一个接一个地读取单个对象并将其添加到列表中应该是相当容易的
create list
while (read object using fromXml)
add to list
您可以使用标准Java和类。它们与对象输入和输出流一样易于使用,并且可以使用getter和setter为应保存的属性、集合以及多个对象向同一流写入任何对象。缺点是它们生成和读取的XML对于人类来说相当难以理解
如果逐个手动写入对象,还需要逐个读取对象,直到获取ArrayIndexOutOfBoundsException(检测EOF的一个有趣事件,但这就是它的记录方式)。您不能在一次调用中加载整个集合,但这里的一个简单循环似乎并不复杂,您将在最后得到您的ArrayList。Java有JAXB,请查看它。@nvy根据建议转到此链接。JAXB很容易理解:文章中的XML片段无效,因为应该有一个根元素。这真的是您的文档还是有根元素?我仍然对您提到的方法有点困惑。。。你是说这个
List persons=new ArrayList()代码>
人代码>
while(person=(person)xstream.fromXML(xml)){
`将person添加到列表中
}`不,我的意思是您一次读取一个person
,然后将其添加到列表中。while(personp=(Person)xstream.fromXML(reader){persons.add(p);}行中的某些内容
但您必须尝试一下。我得到了Xstream初始化错误LOL,我现在正在与之斗争。有什么想法吗?您第一次调用fromXml时得到它吗?是的,我在实例化Xstream对象时第一次得到它……就在这里Xstream Xstream=new Xstream();Downvoter,你认为这种方法有什么错?使用标准库是“不酷”还是对你来说太容易了?我不确定是谁否决了你的答案,但我没有否决你的答案@Audrius Meškauskas.+1感谢你的努力!它解决了OP每次编写一个对象并读入一个集合的问题吗?