yaml解析的方式? (yaml-cpp)

     2023-02-16     273

关键词:

【中文标题】yaml解析的方式? (yaml-cpp)【英文标题】:The way of yaml parsing? (yaml-cpp) 【发布时间】:2011-02-23 11:17:09 【问题描述】:

我已经制作了一个如下所示的 yaml 文件。

Define1: &Define1
  0: zero
  1: one

Define2:
  <<: *Define1
  2: two

并在Online YAML parser 中尝试过。结果如下所示。 (只需了解节点是如何构建的。)


  "Define1": 
    "0": "zero", 
    "1": "one"
  , 
  "Define2": 
    "0": "zero", 
    "1": "one", 
    "2": "two"
  

当然,我希望 'yaml-cpp' 会以相同的方式解析,但它会有所不同。

我猜是这样的。 (几乎可以肯定)


  "Define1": 
    "0": "zero", 
    "1": "one"
  , 
  "Define2": 
    "Define1": 
      "0": "zero", 
      "1": "one"
    ,  
    "2": "two"
  

什么鬼!那我是不是一定要在循环的时候检查节点类型?

这是一个已知问题吗?还是 'yaml-cpp' 就这样解析?

这段代码是我做的。

// already parsed
const YAML::Node& node = &(docYAML)["Define2"];

for (YAML::Iterator it=node->begin(); it!=node->end(); ++it)

    const YAML::Node& nodeList = it.second();

    std::string str;
    nodeList[0] >> str;

【问题讨论】:

【参考方案1】:

yaml-cpp 还没有实现“合并”键。如果您想在问题实施之前关注该问题,请参阅http://code.google.com/p/yaml-cpp/issues/detail?id=41。

目前,yaml-cpp 实际上将您的 YAML 文件解析为:


  "Define1": 
    "0": "zero", 
    "1": "one"
  , 
  "Define2": 
    "<<": 
      "0": "zero", 
      "1": "one"
    ,  
    "2": "two"
  

【讨论】:

感谢您的回答并感谢您提供链接。我想它似乎仍然不支持合并,因为问题仍然存在。也许我必须寻找另一种解决方案。谢谢。 ;)

使用 yaml-cpp 解析 YAML !!timestamp(日期时间)

】使用yaml-cpp解析YAML!!timestamp(日期时间)【英文标题】:ParsingYAML!!timestamp(datetime)withyaml-cpp【发布时间】:2013-05-0921:07:59【问题描述】:我正在使用yaml-cpp惊人的库来解析YAML文件,我需要解析一个!!timestamp类型的标量。例如:-ti... 查看详情

尝试使用 yaml-cpp 解析 OpenCV YAML 输出

】尝试使用yaml-cpp解析OpenCVYAML输出【英文标题】:TryingtoparseOpenCVYAMLouputwithyaml-cpp【发布时间】:2010-04-2012:36:35【问题描述】:我有一系列OpenCv生成的YAML文件,想用yaml-cpp解析它们我在简单的东西上做得很好,但矩阵表示很困难... 查看详情

使用 yaml-cpp 解析 YAML 时的内存消耗

】使用yaml-cpp解析YAML时的内存消耗【英文标题】:MemoryconsumptionduringparsingofYAMLwithyaml-cpp【发布时间】:2014-05-1817:43:19【问题描述】:我正在为内存有限的嵌入式系统开发Qt应用程序。我需要接收几兆字节的JSON数据并尽可能快地解... 查看详情

使用 YAML-CPP 发出解析文件

】使用YAML-CPP发出解析文件【英文标题】:IssueParsingFilewithYAML-CPP【发布时间】:2011-02-0121:34:16【问题描述】:在以下代码中,我在使用parser.GetNextDocument(doc);解析我的.yaml文件时遇到了某种问题。经过大量的调试,我发现这里的(... 查看详情

你如何防止 yaml-cpp 解析器删除所有注释?

】你如何防止yaml-cpp解析器删除所有注释?【英文标题】:Howcanyoukeepyaml-cppparserfromstrippingoutallcomments?【发布时间】:2017-02-0209:46:22【问题描述】:我有一个项目需要读取有据可查的yaml文件,修改几个值,然后将其写回。问题是ya... 查看详情

YAML 的替代脚本?

...,因为它有一个很棒的功能叫做合并!(“我正在使用“yaml-cpp”作为解析器,因为我正在处理cpp。但是!yaml-cpp不支持合并。我可以为替代品做些什么?其他脚本、其他解析器、其他解析方式或任何可以使用合并功能的好方法... 查看详情

找到 YAML 文件,但无法解析内容

...15:49:51【问题描述】:我正在尝试使用VisualStudio2019社区的yaml-cpp(https://github.com/jbeder/yaml-cpp)解析YAML配置文件。#include<iostream>#include"yaml-cpp/yaml 查看详情

如何在不知道终端标量的映射和类型中的键的情况下使用 yaml-cpp 库解析任意 yaml 文件?

...如何在不知道终端标量的映射和类型中的键的情况下使用yaml-cpp库解析任意yaml文件?【英文标题】:Howtoparsearbitraryyamlfilewithyaml-cpplibrarywithoutknowingkeysinmappingsandtypesoftheterminalscalars?【发布时间】:2020-03-0412:31:03【问题描述】:最... 查看详情

如何使用 yaml-cpp 发出和解析原始二进制数据

】如何使用yaml-cpp发出和解析原始二进制数据【英文标题】:How-toemitandparserawbinarydatausingyaml-cpp【发布时间】:2010-10-2819:13:23【问题描述】:是否可以发出和读取(解析)二进制数据(图像、文件等)?像这样显示在这里:http://y... 查看详情

Yaml-cpp(新 API):在序列中混合地图和标量的问题

】Yaml-cpp(新API):在序列中混合地图和标量的问题【英文标题】:Yaml-cpp(newAPI):Problemsmixingmapsandscalarsinasequence【发布时间】:2014-03-1716:13:35【问题描述】:我在解析这种形式的yaml文件时遇到了一个非常简单的问题:-Foo-Bar:b1:5我... 查看详情

解析 YAML 文件?

...le?【发布时间】:2020-08-1321:08:58【问题描述】:如何使用yaml-cpp解析以下YAML文件?scene:-camera:film:width:800height:600filename:"out.svg"-shape:name:"muh"我试过了:#include<yaml-cpp/yaml.h>intmain()YAML::Noderoo 查看详情

Linux 中 yaml-cpp 0.5.3 的示例

】Linux中yaml-cpp0.5.3的示例【英文标题】:exampleforyaml-cpp0.5.3inlinux【发布时间】:2017-07-2709:26:32【问题描述】:我对yaml-cpp还是很陌生。在做了tutorials之后,教程很好。但是当我尝试解析我自己的yaml文件时,这对我来说有点困难。... 查看详情

使用 YAML-cpp,如何识别未知密钥?

】使用YAML-cpp,如何识别未知密钥?【英文标题】:UsingYAML-cpp,howtoidentifyunknownkeys?【发布时间】:2012-10-3121:57:15【问题描述】:该用例正在逐步执行以YAML编写的配置文件。我需要检查每个键并相应地解析其值。我喜欢使用像doc[&q... 查看详情

使用 YAML-CPP 将 YAML 值添加到标准映射

】使用YAML-CPP将YAML值添加到标准映射【英文标题】:AddYAMLvaluestostdmapusingYAML-CPP【发布时间】:2018-11-0722:07:47【问题描述】:我有一个yaml文件,其中包含嵌套地图:SOLAR-SYSTEM:my/planet:earth:bluemy/satellite:moon:white我正在使用yaml-cpp来解... 查看详情

有没有合理的调试yaml-cpp的方法

】有没有合理的调试yaml-cpp的方法【英文标题】:Isthereareasonablewayofdebuggingyaml-cpp【发布时间】:2016-12-1110:14:23【问题描述】:有没有一种方法可以在VS中以可理解的方式可视化YAML::Node,这样我们就可以看到它的类型是什么,第一... 查看详情

如何使用 yaml-cpp 发出复杂的数据结构?

】如何使用yaml-cpp发出复杂的数据结构?【英文标题】:Howtouseyaml-cpptoemitacomplicateddatastructure?【发布时间】:2011-09-0216:33:19【问题描述】:此问题主要针对yaml-cpp(JesseBeder)的作者,他要求在此处发布有关yaml-cpp使用的问题。在许多... 查看详情

yaml-cpp

yaml作为一种便捷的文件格式,通过C++进行操作时,可以利用yaml-cpp进行。参考网站yaml-cppyaml-cpp 查看详情

将多行字符串添加到 Yaml-cpp 节点

】将多行字符串添加到Yaml-cpp节点【英文标题】:AddingmultilinestringtoaYaml-cppnode【发布时间】:2014-03-0617:16:18【问题描述】:如何使用节点将多行字符串作为值添加到键?我不想使用发射器。我想要下面的代码苹果手机:废话...废... 查看详情