Ras*_*yrk 5 c++ boost boost-propertytree
如何从boost xml属性树中删除节点?
我有一个这样的文件:
<folders>
<folder>some/folder</folder>
<folder>some/folder</folder>
<folder>some/folder</folder>
</folders>
Run Code Online (Sandbox Code Playgroud)
我知道如何迭代和打印所有文件夹,但我如何删除其中一个项目并保存xml?
我可能会尝试:
boost::property_tree::ptree pt;
pt.erase(key);
Run Code Online (Sandbox Code Playgroud)
嗯,我是这样做的:
void Backups::removeGeneric(const std::string key, const std::string value)
{
boost::property_tree::ptree pt;
boost::property_tree::xml_parser::read_xml(Backups::getBackupFile(), pt);
bool remove = true;
try {
pt.get_child(key);
}
catch(boost::exception &ex)
{
std::cout << "There is nothing to remove." << std::endl;
remove = false;
}
if(remove)
{
bool exists = false;
boost::property_tree::ptree newPt;
BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child(key))
{
if(v.second.data() != value)
newPt.add("scheme", v.second.data());
if(v.second.data() == value)
exists = true;
}
if(exists)
{
pt.put_child(key, newPt);
boost::property_tree::xml_parser::write_xml(Backups::getBackupFile(), pt);
std::cout << value << " was removed." << std::endl;
}
else
std::cout << value << " is not added." << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9096 次 |
| 最近记录: |