1

这是我想要做的。

  1. 读取整个 XML 文件(我不在乎元素或属性的名称等)。
  2. 将读取的 XML 文件保存到内存中。
  3. 更新读取的 xml 文件的一些值。
  4. 写回 XML 文件。

我正在尝试使用 XMLStreamReader 来读取 XML 文件,但是到目前为止我看到的所有示例,看起来我必须提供元素名称。但是,我不关心元素名称,只想将整个 XML 文件读入内存。而且,我不确定在阅读时应该如何存储数据类型。我正在考虑将它们存储到 Document 数据类型中。

关于如何读取整个 XML 文件并将读取的内容存储在内存中的任何建议?

谢谢。

4

3 回答 3

3

最简单的方法是使用JAXB。您可以使用xjcXML 模式生成 Java 类。然后使用 JAXB 解组(加载)您的数据,像通常处理任何其他对象(使用 getter/setter)一样操作 Java 对象,并将其编组(保存)回 XML 文件。

您也可以直接使用 DOM,但操作 DOM 比使用直接反映 XML 结构的 POJO 繁琐得多。

于 2012-07-13T19:05:08.600 回答
0

XMLStreamReader是一个面向事件的解析器,为您提供 XML 的流式视图。您显然希望整个 XML 树都在内存中,所以最好的选择是 JDOM:

public Document parse(Reader in) {
  return new SAXBuilder().build(in);
}

JDOM 优于 JAXB 的优势在于导航:您可以使用简单的表达式(如"//my-elem". 使用 JAXB,您将编写一大堆代码和嵌套循环来获得这个简单的结果。

(更不用说没有您的 XML 的 XML Schema,JAXB 甚至不会与您对话。)

于 2012-07-13T19:22:07.240 回答
0

有时 JAXB 可能是矫枉过正,而 DOM 可以进行一些操作:

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = f.newDocumentBuilder();
Document doc = builder.parse(new File("test.xml"));
于 2012-07-13T19:28:20.343 回答