dex*_*ish 7 java yaml snakeyaml
我们如何修改现有的 YAML 并保留其中的注释。有没有 Java 解析器可以做到这一点?例如,如果我有以下 YAML:
#This is a test YAML
name: abcd
age: 23
#Test YAML ends here.
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用 java 解析器编辑此 Yaml 并保留注释。
截至撰写本文时,还没有适用于 Java 的往返 YAML 解析器。有著名的SnakeYAML,它不保留注释(请参阅此处作者的注释),以及一个名为Camel的较新项目,我对它知之甚少;但这绝对不是往返。
理论上您可以做的是使用 SnakeYaml Yaml.parse,然后迭代事件。每个事件都有一个开始和结束标记,给出事件的开始和结束行和列。这使得将事件映射回源并发现源中未解析为事件的部分(可能是注释)成为可能。有了这个映射,您现在可以修改事件列表并将其写回。最后,您第二次读取结果,发现事件之间的间隙,其中原始 YAML 中有注释,但修改后的 YAML 中没有,然后重新插入这些注释,从而为您提供经过修改的最终YAML和评论。
当然,这是非常复杂的。我不建议您这样做,除非您 a) 对 YAML 的结构有深入的了解或愿意学习它,并且 b) 您的用例证明了如此大量的工作是合理的。
| 归档时间: |
|
| 查看次数: |
5637 次 |
| 最近记录: |