2
我的工作,看起來像這樣一個XML文件:boost ptree - 如何使用迭代器修改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替換。
#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);
我的問題是,這個代碼沒有做任何事情。 我的猜測是迭代器不是對我想修改的節點的引用,而是對此節點的副本的引用。
你有什麼建議嗎?
預先感謝您。
你在使用哪種boost庫? – 2011-06-16 19:07:02
我認爲它的Boost Property樹。 – yasouser 2011-06-16 19:08:43
發佈真正的迭代器代碼,以上是不可編譯的。 – 2011-06-16 19:14:25