【问题标题】:SnakeYAML: Is it possible to get the anchor name of an object?SnakeYAML:是否可以获取对象的锚点名称?
【发布时间】:2016-08-24 15:48:46
【问题描述】:

当我使用SnakeYAML 加载以下文档时:

unit:
  &kg
  name: Kilogram

它返回一个包含以下内容的地图:

{unit={name=Kilogram}}

使用锚点引用在 SnakeYAML 中效果很好,但是否也可以从文档中获取锚点名称?

代码sn-p:

String text = "unit:\n  &kg\n  name: Kilogram\n";
System.out.println(new Yaml().load(text));  // -> {unit={name=Kilogram}}

【问题讨论】:

    标签: java yaml snakeyaml


    【解决方案1】:

    SnakeYAML 最初基于 PyYAML,并且基于代码通过保持从锚名称到它在解析期间创建的对象的映射来解析锚。 如果解析器稍后遇到引用,它会在锚点中查找名称并知道创建指向为锚点创建的对象的链接。

    在 PyYAML 中,此映射位于 Composer 对象的代码中,该属性被适当地称为 anchors。 SnakeYaml 这是still called the same

    您需要做的是遍历该映射并将值与(对)您的对象进行比较。如果它们匹配,则属于该值的键几乎可以肯定是锚名称。


    在我的 python 包 ruamel.yaml 中,它是 PyYAML 到 YAML 1.2 的更新,我实现了一个往返模式,其中保留了 cmets 和锚点。在构建过程中,我将注释和锚点信息挂在要创建的对象上,这在 Python 中很容易做到,但 AFAIK 在 Java 中并不那么容易

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 1970-01-01
      • 2016-06-22
      • 2010-10-16
      • 2019-12-18
      • 2015-12-09
      • 2023-03-24
      • 2011-12-22
      相关资源
      最近更新 更多