簡體   English   中英

yaml解析的方式? (YAML-CPP)

[英]The way of yaml parsing? (yaml-cpp)

我已經制作了如下的yaml文件。

Define1: &Define1
  0: zero
  1: one

Define2:
  <<: *Define1
  2: two

並嘗試在線YAML解析器 結果如下。 (只需了解節點的構造方式。)

{
  "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;
}

yaml-cpp尚未實現“merge”鍵。 如果您想在問題實施之前解決問題,請參閱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"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM