我想使用XStream读取xml文件的内容。我想阅读整个文件,但是不知道在while条件下要放什么,所以XStream不会抛出java.io.EOFException
异常。基本上我想在我到达时停止循环文件的结尾。代码如下:
public static void main(String[] args) throws IOException, ClassNotFoundException
{
XStream xstream = new XStream(new StaxDriver());
xstream.alias("person", Person.class);
Reader someReader = new FileReader("filename.xml");
ObjectInputStream in = xstream.createObjectInputStream(someReader);
while (???) {
Person a = (Person)in.readObject(); // Person is just a class containing a String and an int
a.print();
}
}
答案 0 :(得分:0)
我的建议:如果它们作为列表存储在XML中,请尝试在中将其作为列表读取:
List<Person> people = new ArrayList<Person>();
people = (List<Person>) xstream.fromXML(someReader);
根据XStream API,XStream
对象可以从任意数量的不同输入中读取,包括直接来自Reader
。如果您直接从列表中读取,则需要稍微更改代码以允许隐式集合。可以找到使用隐式集合的一个很好的工作示例here。
或者,如果您确实想要使用ObjectInputStream
,可以参考this question和this answer获取有关如何判断何时到达{{1}结尾的解决方案1}}。