读取整个XML文件并存储在内存java中

时间:2012-07-13 18:59:38

标签: java

这是我想要做的。

  1. 读取整个XML文件(我不关心元素或属性的名称等。)。
  2. 将读取的XML文件保存到内存中。
  3. 更新read xml文件的某些值。
  4. 回写XML文件。
  5. 我正在尝试使用XMLStreamReader来读取XML文件,但是到目前为止我看到的所有示例,看起来我必须提供元素名称。但是,我并不关心元素名称,只是想将读取的XML文件读入内存。并且,我不确定在我阅读时我应该如何存储数据类型。我想将它们存储到Document数据类型中。

    有关如何读取整个XML文件和存储读取内容的任何建议吗?

    感谢。

3 个答案:

答案 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"));