我正在尝试从旧的commons-configuration迁移到commons-configuration2,但是在使用新的Configurations构建器时,我无法使用缩进格式格式化XML输出。
在我这样做之前,效果还不错。
XMLConfiguration configuration = new XMLConfiguration()
{
@Override
protected Transformer createTransformer()
throws ConfigurationException
{
Transformer transformer = super.createTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("http://xml.apache.org/xslt}indent-amount", "4");
return transformer;
}
};
但是在commons-configurations2中,您使用ConfigurationBuilder来获取XMLConfiguration实例,该实例删除了创建XMLConfiguration子类的功能,例如:
XMLConfiguration configuration = configurations
.xmlBuilder(new File("config.xml"))
.getConfiguration();
还有其他自定义XMLConfiguration的Transformer的方法吗?
谢谢!
最佳答案
这是我解决的方法。
创建一个扩展XMLConfiguration的新类:
public class PrettyXMLConfiguration
extends XMLConfiguration
{
@Override
protected Transformer createTransformer()
throws ConfigurationException
{
Transformer transformer = super.createTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "4");
return transformer;
}
}
像这样创建XMLConfiguration:
XMLConfiguration builder = new Configurations()
.fileBasedBuilder(PrettyXMLConfiguration.class, new File("config.xml"))
.getConfiguration();
甚至更简单:
XMLConfiguration builder = new Configurations()
.fileBased(PrettyXMLConfiguration.class, new File("config.xml"));