Java 使用XStream读取整个文件

Java 使用XStream读取整个文件,java,xml,io,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读取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();
    }
}

我的建议是:如果它们以列表形式存储在XML中,请尝试以列表形式读入:

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

或者,如果您确实想使用ObjectInputStream,您可以参考和,了解如何判断何时到达ObjectInputStream的末尾

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