Java 用于添加元素的Commons配置库

Java 用于添加元素的Commons配置库,java,xml-parsing,apache-commons,Java,Xml Parsing,Apache Commons,我正在使用ApacheCommons配置库来读取配置xml,它工作得很好。但是,我无法修改元素的值或添加新元素 要读取xml,我使用以下代码: XMLConfiguration config = new XMLConfiguration(dnsXmlPath); boolean enabled = config.getBoolean("enabled", true)); int size = config.getInt("size"); 在写作中,我试图使用: config.setPrope

我正在使用ApacheCommons配置库来读取配置xml,它工作得很好。但是,我无法修改元素的值或添加新元素

要读取xml,我使用以下代码:

XMLConfiguration config = new XMLConfiguration(dnsXmlPath);

boolean enabled = config.getBoolean("enabled", true));
int size = config.getInt("size");
在写作中,我试图使用:

config.setProperty("newProperty", "valueNewProperty");
config.save();
如果我调用config.getString(“newProperty”),我将获得“valueNewProperty”,但xml没有被更改。 显然这不是正确的方法,或者我遗漏了一些东西,因为它不起作用。 谁能告诉我怎么做?
提前感谢。

您正在修改内存中的xml结构

解析后的文档将保持其结构。该类还尝试从加载的XML文档中保留尽可能多的信息,包括注释和处理指令。它们也将包含在save()方法创建的文档中

与其他基于文件的配置类一样,该类维护加载的配置文件的名称和路径。这些属性可以使用多种setter方法进行更改,但save()和load()方法不能修改它们。如果XML文档包含到其他文档(例如到DTD)的相对路径,则将根据为此配置设置的路径解析这些引用

你需要使用这个方法

例如,在完成所有修改后保存:

 config.save(new PrintWriter(new File(dnsXmlPath)));
编辑


如注释中所述,在调用
setProperty()
方法之前调用
config.load()
可以解决这个问题。

我用以下几行代码解决了这个问题。我缺少config.load()

确实,您可以使用下一行代替config.save(),并且工作原理相同

config.save(new PrintWriter(new File(dnsXmlPath)));

我试过了,但没用。我缺少的是我需要在setProperty()之前调用config.load。我仍然遇到一些问题,因为它会重复一些元素。你知道我在哪里可以找到使用写作的教程或编码示例吗?所有我找到的都只是解释如何阅读。这可能会有所帮助
config.save(new PrintWriter(new File(dnsXmlPath)));