首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yaml解析的方式?(yaml-cpp)

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

Stack Overflow用户
提问于 2011-02-23 19:17:09
回答 1查看 1.2K关注 0票数 3

我制作了一个yaml文件,如下所示。

代码语言:javascript
复制
Define1: &Define1
  0: zero
  1: one

Define2:
  <<: *Define1
  2: two

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

代码语言:javascript
复制
{
  "Define1": {
    "0": "zero", 
    "1": "one"
  }, 
  "Define2": {
    "0": "zero", 
    "1": "one", 
    "2": "two"
  }
}

当然,我期望'yaml-cpp‘会以相同的方式解析,但它在某种程度上不同。

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

代码语言:javascript
复制
{
  "Define1": {
    "0": "zero", 
    "1": "one"
  }, 
  "Define2": {
    "Define1": {
      "0": "zero", 
      "1": "one"
    },  
    "2": "two"
  }
}

搞什么鬼!那么我需要在循环时检查节点类型吗?

这是一个已知的问题吗?或者“yaml-cpp”就是这样解析的?

这段代码就是我所做的。

代码语言:javascript
复制
// 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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-24 02:04:28

yaml-cpp还没有实现"merge“键。如果你想跟踪这个问题直到它被实现,请参阅http://code.google.com/p/yaml-cpp/issues/detail?id=41

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

代码语言:javascript
复制
{
  "Define1": {
    "0": "zero", 
    "1": "one"
  }, 
  "Define2": {
    "<<": {
      "0": "zero", 
      "1": "one"
    },  
    "2": "two"
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5090151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档