对于java,是否有任何可靠的可靠框架可以在yaml中插值令牌?
我的目标是我想将yaml的一部分放在外部文件中。我可能会嵌入YAML中的XML或JSON,我希望能够外部化它们,以使我的yaml看起来更漂亮。
例如,我有这个yaml模板:
Root:
PropertyA: ${valueA}
PropertyB: |
${valueB}
给出${valueA}
是Hello
和${valueB}
是:
wonderful
world
我希望最终的yaml文件为
Root:
PropertyA: Hello
PropertyB: |
wonderful
world
请注意,"世界"前面的空间被保留了。
我很乐意使用一些YAML解析器滚动自己的代码,但是如果已经有一些开源工具可以做到这一点,为什么要这样做:(
我试图搜索这种工具,但没有真正有用的出现:(
仔细观察snakeyaml;它实际上可以做我需要的事情。您需要做的就是拥有一个Constructor
子类并覆盖constructScalar()
方法:
Constructor constructor = new Constructor() {
@Override
public Object constructScalar(ScalarNode node) {
if (isToken(node.getValue()) {
return interpolateToken(node.getValue());
}
return super.constructScalar(node);
}
}
Yaml yaml = new Yaml(constructor);
yaml.load(yamlReader);