我有一些boost::property_tree::ptree
。我需要树来删除一些具有特定标签名称的元素。例如,xml 表示源ptree
如下:
<?xml version="1.0" encoding="utf-8"?>
<document>
<B atr="one" atr1="something">
<to_remove attr="two">10</to_remove>
</B>
<to_remove>
<C>value</C>
<D>other value</D>
</to_remove>
<E>nothing</E>
</document>
我想得到ptree
使用如下 xml:
<?xml version="1.0" encoding="utf-8"?>
<document>
<B atr="one" atr1="something" />
<E>nothing</E>
</document>
如何编写生成新函数的函数ptree
与删除<to_remove>
nodes?
ptree的value_type是std::pair,因此可以迭代树并删除相应的节点。以下是一个示例。
void remove(ptree &pt){
using namespace boost::property_tree;
for (auto p = pt.begin(); p != pt.end();){
if (p->first == "to_remove"){
p = pt.erase(p);
}
else{
remove(p->second);
++p;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)