java中使用xstream的xml解析器

java中使用xstream的xml解析器,java,xml,parsing,xstream,Java,Xml,Parsing,Xstream,我正在尝试使用xstream解析XML。以下是XML文件的外观: <Book> <type name="story" value="true" /> <type name="history" value="true" /> </Book> 解析此xml的代码如下所示: public class Parsing_Xml { public static void main(String[] args) throws FileNotFo

我正在尝试使用xstream解析XML。以下是XML文件的外观:

<Book>
<type name="story" value="true"  />
<type name="history" value="true" />
</Book>

解析此xml的代码如下所示:

public class Parsing_Xml {

    public static void main(String[] args) throws FileNotFoundException {

    FileReader fileReader = new FileReader("book.xml");  // load our xml file 

    XStream xStream = new XStream();
    xStream.processAnnotations(Book.class);
    Book bookObject = (Book) xStream.fromXML(fileReader);
    System.out.println(bookObject.type);
    }

    @XStreamAlias("Book")
    class Book {
        @XStreamImplicit
        List<String> type = new ArrayList<String>();

    }
}
公共类解析\u Xml{
公共静态void main(字符串[]args)引发FileNotFoundException{
FileReader FileReader=newfilereader(“book.xml”);//加载我们的xml文件
XStream XStream=新的XStream();
processAnnotations(Book.class);
BookBookObject=(Book)xStream.fromXML(fileReader);
System.out.println(bookObject.type);
}
@XStreamAlias(“书”)
课堂用书{
@XStreamImplicit
列表类型=新建ArrayList();
}
}
这是我得到的结果:

[,]


为什么这不能用XML中存在的所有类型填充数组?

类型不是一个简单的字符串,而是一个带有两个属性的标记(
name
value
)。如果你有
foobar
,你会看到
[“foo”,“bar”]
。您能验证这一点吗?在一个简单的测试中将实例转换为xml,而不是尝试构造可以反序列化的xml。您将了解库是如何以这种方式工作的,以及它对给定实例的期望值。
type
不是一个简单的字符串,而是一个具有两个属性(
name
value
)的标记。如果你有
foobar
,你会看到
[“foo”,“bar”]
。您能验证这一点吗?在一个简单的测试中将实例转换为xml,而不是尝试构造可以反序列化的xml。您将了解库是如何以这种方式工作的,以及它对给定实例的期望。