我正在处理如下所示的XML文件:
<persons>
<person>
<name>NAME1</name>
<ID>ID1</ID>
</person>
<person>
<name>NAME2</name>
<ID>ID2</ID>
</person>
<person>
<name>NAME3</name>
<ID>ID3</ID>
</person>
... etc
</persons>
我需要将所有名称替换为“OTHERNAME”。
当我使用以下代码时,其中一个名称被OTHERNAME替换。
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using boost::property_tree::ptree;
ptree pt;
read_xml(filename,pt);
ptree &pt_persons = pt.get_child("persons");
ptree &pt_person = pt_person.get_child("person");
pt_person.put("NAME","OTHERNAME");
但是,我想替换所有名称,所以尝试了以下代码:
ptree pt
read_xml(filename,pt);
ptree &pt_persons = pt.get_child("persons");
for( ptree::iterator &it = pt_persons.begin(); it != pt_persons.end();it++){
ptree &pt_person = it->second;
pt_person.put("NAME","OTHERNAME");
}
write_xml(filename, pt);
我的问题是此代码不执行任何操作。
我的猜测是,迭代器不是对我要修改的节点的引用,而是对该节点的副本的引用。
你有什么建议吗?
先感谢您。
最佳答案
为了解决我的问题,我决定使用TinyXML。
使用它来更新和修改XML文件要容易得多。