这是我想要做的。
我正在尝试使用XMLStreamReader来读取XML文件,但是到目前为止我看到的所有示例,看起来我必须提供元素名称。但是,我并不关心元素名称,只是想将读取的XML文件读入内存。并且,我不确定在我阅读时我应该如何存储数据类型。我想将它们存储到Document数据类型中。
有关如何读取整个XML文件和存储读取内容的任何建议吗?
感谢。
答案 0 :(得分:3)
最简单的方法是使用JAXB。您可以使用xjc
从XML模式生成Java类。然后使用JAXB来解析(加载)您的数据,像通常使用任何其他对象一样操作Java对象(使用getter / setter),并将其编组(保存)回XML文件。
您也可以直接使用DOM,但操作DOM比使用直接镜像XML结构的POJO要繁琐得多。
答案 1 :(得分:0)
XMLStreamReader
是一个面向事件的解析器,它为您提供类似于XML的流视图。您显然希望整个XML树都在内存中,因此最好的选择是JDOM:
public Document parse(Reader in) {
return new SAXBuilder().build(in);
}
JDOM优于JAXB的优点是导航:您可以使用类似"//my-elem"
的简单表达式深入到XML树中。使用JAXB,您将编写一个barnful代码和嵌套循环来获得这个简单的结果。
(更不用说没有XML的XML Schema,JAXB甚至不会和你说话。)
答案 2 :(得分:0)
有时JAXB可能有点过分,DOM可以进行一些操作:
DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = f.newDocumentBuilder();
Document doc = builder.parse(new File("test.xml"));