使用XStream读取整个文件

时间:2015-01-30 20:51:30

标签: java xml io

我想使用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();
    }
}

1 个答案:

答案 0 :(得分:0)

我的建议:如果它们作为列表存储在XML中,请尝试在中将其作为列表读取:

List<Person> people = new ArrayList<Person>();
people = (List<Person>) xstream.fromXML(someReader);

根据XStream APIXStream对象可以从任意数量的不同输入中读取,包括直接来自Reader。如果您直接从列表中读取,则需要稍微更改代码以允许隐式集合。可以找到使用隐式集合的一个很好的工作示例here

或者,如果您确实想要使用ObjectInputStream,可以参考this questionthis answer获取有关如何判断何时到达{{1}结尾的解决方案1}}。