【发布时间】:2019-12-11 20:50:59
【问题描述】:
我想对 yml 文件中的值进行一些处理。有人建议我为此目的使用snakeYAML 的low-level API。所以我使用它编写了一些代码,但由于以下原因,我几乎被卡住了。
这是我写的代码:
public static void main(String[] args) throws Exception{
Yaml yaml = new Yaml();
FileReader contentFromFile=new FileReader("/Users/prakash.tiwari/Desktop/yamlInput.yml");
for (Node node : yaml.composeAll(contentFromFile)) {
System.out.println(node);
}
}
这是我的yamlInput.yml:
Prakash:
Lucky:
Number: 11
Really? : NotAtAll
这是控制台上打印的内容(它在一行中,我对其进行了格式化并添加了注释以使其可读):
<org.yaml.snakeyaml.nodes.MappingNode
(
tag=tag:yaml.org,2002:map,
values=
{
key=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=Prakash)>;
value=355629945 // Why is this a garbage value?
}
{
key=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=Really?)>;
value=
<NodeTuple
keyNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=Really?)>;
valueNode=<org.yaml.snakeyaml.nodes.ScalarNode (tag=tag:yaml.org,2002:str, value=NotAtAll)>
>
}
)>
此时我可以通过搜索valueNode=<org.yaml.snakeyaml.nodes.ScalarNode 来提取同样是ScalarNode 的valueNode,然后处理该节点中的值。
但问题是我不知道为什么它在组成地图节点时会放置一个垃圾值。所以这是我的问题:
- 如何正确编写 yaml 文件,以便地图节点正确显示而不是垃圾值?
- 完成处理并成功将值替换为处理后的值后,如何将这些值放回 yaml 文件?
- 如果您认为这是一种垃圾方法,请向我推荐一个更好的方法。
【问题讨论】:
标签: java parsing yaml snakeyaml