如何在SnakeYAML-engine中将YAML解析为Node并获取键的行号
问题描述
我需要在Java代码库中解析YAML文件,同时要获取解析后各键对应的行号,解析必须遵循YAML 1.2规范。目前使用SnakeYAML engine,也可以切换到其他合适的库。
调研进展
我选择使用SnakeYAML engine是因为它支持YAML 1.2规范,而SnakeYAML仅支持1.1规范。针对SnakeYAML,我找到过一段可用的代码片段:
Node node = yaml.compose(new InputStreamReader(yamlStream));
其中的Node类正好能满足需求,它包含了每个关键字在文件中的行号信息,但这段代码只适用于SnakeYAML,不适用于SnakeYAML engine。
我需要实现等效的功能,注意到SnakeYAML engine中也有对应的Node类(org.snakeyaml.engine.v2.nodes.Node),它的类注释提到:
[...] the node graph is usually created by the org.snakeyaml.engine.v2.composer.Composer
但我在SnakeYAML engine的文档里找不到相关的实用说明,网上也没有找到可用资源,希望能得到帮助。
应用详情
我使用Java 11,上述类来自SnakeYAML engine 2.0版本,也可以根据需求更换其他版本。
参考代码
build.gradle配置
//implementation 'org.yaml:snakeyaml:1.27', if you want to test it implementation 'org.snakeyaml:snakeyaml-engine:2.0'
Main.java的main方法代码
//code for SnakeYAML Node node = new org.yaml.snakeyaml.Yaml().compose(new StringReader("key: value"));
内容的提问来源于stack exchange,提问作者Francesco Urdih
相关产品推荐
相关产品推荐

