Java 在 YAML 中插入令牌的框架
Java Framework to interpolate tokens in YAML
对于 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
注意"world"前面的space被保留。
我非常乐意使用一些 YAML 解析器来编写我自己的代码,但是如果已经有一些开源工具可以这样做,为什么还要这样做:)
我尝试 Google 寻找这种工具,但没有找到真正有用的东西:(
仔细查看 SnakeYaml; it can actually do what I need. All you need to do is to have a 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);
对于 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
注意"world"前面的space被保留。
我非常乐意使用一些 YAML 解析器来编写我自己的代码,但是如果已经有一些开源工具可以这样做,为什么还要这样做:)
我尝试 Google 寻找这种工具,但没有找到真正有用的东西:(
仔细查看 SnakeYaml; it can actually do what I need. All you need to do is to have a 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);