2014-01-09 39 views
1

有一個像YAML文件:我如何刪除YAML文件的節點與YAML-CPP

top: 
    names: 
    - name: john1 
    - name: john2 
    - name: john3 
    - name: john.doe 

現在我已經刪除頂部/姓名/名稱(john.doe)。我如何用yaml-cpp實現這一目標?我的代碼是:

void deleteNode(string id) 
{ 
    YAML::Node config = YAML::LoadFile("doc.yaml"); 
    for (int i = 0; i < config["top"]["names"].size(); i++) 
    { 
     if(config["top"]["names"][i]["name"].as<string>() == id) 
     { 
      config["top"]["names"].remove(config["top"]["names"][i]); 
      break; 
     } 
    } 
} 
deleteNode("john.doe"); 

這似乎沒有做任何事情。

回答

2

既然你正在處理一個序列,您可以通過它的索引中刪除節點:

void deleteNode(string id) { 
    YAML::Node config = YAML::LoadFile("doc.yaml"); 
    YAML::Node names = config["top"]["names"]; 
    for (int i = 0; i < names.size(); i++) { 
     if(names[i]["name"].as<string>() == id) { 
      names.remove(i); 
      break; 
     } 
    } 
}