我正在尝试从旧的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?
谢谢!
答案 0 :(得分:2)
以下是我如何解决它。
创建一个扩展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"));