YAML 的替代脚本?

Posted

技术标签:

【中文标题】YAML 的替代脚本?【英文标题】:Alternative script for YAML? 【发布时间】:2011-02-28 03:26:35 【问题描述】:

我打算使用 yaml,因为它有一个很棒的功能叫做合并! (“

我正在使用“yaml-cpp”作为解析器,因为我正在处理 cpp。

但是! yaml-cpp 不支持合并。我可以为替代品做些什么?

其他脚本、其他解析器、其他解析方式或任何可以使用合并功能的好方法。

但我不需要合并多个对象。我只需要定义一些东西并创建从第一个继承的另一个对象并覆盖一些值。就是这样。

感谢阅读。

【问题讨论】:

这显然是您的previous question 的“碰撞”。很抱歉您之前没有得到答案,但解决方案是编辑它,而不是在重复上浪费人们的时间。 好吧,我在发布这个问题之前删除了它。你的链接现在坏了。我不知道你是怎么找到我之前的问题的。也许它在标记为已删除后不久就被删除了。这仍然是再次发布问题的不好方式吗?编辑前一个问题和删除旧问题并发布新问题有什么区别?我的目的是把我的问题放在第一页。编辑上一个问题的方式是否相同? 链接没有损坏,只是您没有查看它的声誉。正如我所说,这很糟糕,因为它浪费了人们的时间。阅读您上一个问题的人会看到一个不提供额外信息的新问题。头版上有真正的新问题。 【参考方案1】:

如果迫不及待需要合并,可以按照“barma”关于 yaml-cpp 问题的建议:http://code.google.com/p/yaml-cpp/issues/detail?id=41#c12

更改是将下面的行插入到 FindValueForKey 模板中(在 for-loop 和 return 0 之间):

const Node *pValueMerge = FindValueForKey(std::string("<<"));
if(pValueMerge) 
    return pValueMerge->FindValueForKey(key);

问题(正如我在问题页面上提到的)是规范允许

<<: [*dict1, *dict2]

合并多个字典;但看来你不需要那个。

【讨论】:

我试过这个,但它似乎陷入了无限循环。也许我把这段代码放在了错误的地方。你试过这个吗?它真的有效吗?我可能需要再试一次 还有一件事,即使它有效,也不支持遍历节点,不是吗?我猜该代码仅适用于按键查找。 @SeniorLee - 首先,这对你有用吗? (我不能确定,因为您接受了答案但发布了该评论。)其次,这是正确的,除非您明确地这样做,否则您将无法遍历合并的节点。【参考方案2】:

请求 'yaml-cpp' 来实现该功能。

【讨论】:

已经有一个未解决的问题(自 2009 年开始)。而且我没有时间等到它实施。谢谢。【参考方案3】:

问题

使用 YAML 合并键。

解决方案

其他脚本、其他解析器、其他解析方式或任何可以使用合并功能的好东西。

在撰写本文时,以下 YAML 实现支持所需的功能

Ruby 2.x Python 2.x // 3.x

【讨论】:

以上是关于YAML 的替代脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如果浏览器是 Internet Explorer:运行替代脚本

替代 postgres 中用于脚本的 list 命令

不替代自然评分的 ElasticSearch 自定义脚本评分

powershell 脚本 - WINDOWS - 网络:测试网络连接/ Telnet替代方案

动态替代变量

Python 会很好地替代 Windows 命令行/批处理脚本吗?