我制作了一个如下所示的 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;
}