我正在使用apache commons配置库来读取配置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尚未更改。 显然这不是正确的方式,或者我错过了一些东西,因为它不起作用。 谁能告诉我怎么做? 提前谢谢。
答案 0 :(得分:2)
您正在修改内存中的xml结构
将保存已解析的文档以保持其结构。该类还尝试尽可能多地从加载的XML文档中保留信息,包括注释和处理指令。这些也将包含在save()方法创建的文档中。
与其他基于文件的配置类一样,此类维护已加载配置文件的名称和路径。可以使用几种setter方法更改这些属性,但save()和load()方法不会修改它们。如果XML文档包含指向其他文档(例如DTD)的相对路径,则会根据为此配置设置的路径解析这些引用。
您需要使用XMLConfiguration.html#save(java.io.Writer)方法
例如,在完成所有修改后,保存它:
config.save(new PrintWriter(new File(dnsXmlPath)));
修改强>
正如评论中所述,在调用config.load()
方法之前调用setProperty()
可以解决问题。
答案 1 :(得分:0)
我用以下几行解决了这个问题。我错过了config.load()。
XMLConfiguration config = new XMLConfiguration(dnsXmlPath);
config.load();
config.setProperty("newProperty", "valueNewProperty");
config.save();
虽然您可以使用下一行而不是config.save()并且工作原理相同。
config.save(new PrintWriter(new File(dnsXmlPath)));