0

我正在使用 Apache Commons Digester(带注释)将 XML 文件加载到 Java 类中。一切正常。现在,我需要更新 XML 文件。我必须更改(在 Java 中)属性的值,然后写出新的 XML 文件。我该怎么办?据我所知,Digester API 并不是为此目的而设计的。

编辑:阅读答案,我知道我没有提供足够的信息。我的 XML 文件是程序 A 的配置文件,所以当我启动程序 A 时我真的需要它的内容。然后,我有另一个 GUI 程序 B 能够修改这个配置文件,它只需要用户的一些输入和修改 XML 文件上的相关字段。

4

2 回答 2

0

XML 修改(通常称为 XML 转换)最好在XSLT 标准中处理。 Apache Xalan是(其中一个)实现此标准的 Java 库

于 2015-07-15T14:57:26.147 回答
0

正如您所发现的,Digester 是一个只读工具——它提供了从 XML 到 Java 类的映射,但不是相反的。如果您需要将 XML 读入 Java 类,然后再次将其写回 XML,我建议:

  • 继续使用 Digester 进行读取,并使用低级 XML 编写器类(例如XMLStreamWriter)将数据写回。如果您的数据不是那么复杂,并且/或者输出 XML 的结构与输入 XML 的结构不同,则此方法适用。
  • 将 Digester 替换为完整的 Java 到 XML 映射库(JAXB、JiBX 等),它将为您读取和写入 XML。如果您的数据更复杂,和/或输出 XML 与输入 XML 的结构相同,则此方法适用。

对您正在做的事情知之甚少,无法真正推荐其中一种方法而不是另一种。

如果您实际上根本不需要 Java 类中的数据而只是想对其进行转换,那么 @sharonbn 所说的 XSLT 也是一个很好的解决方案。

于 2015-07-16T06:46:56.987 回答