gpt4 book ai didi

c++ - boost ptree-如何使用迭代器修改 XML?

转载 作者:数据小太阳 更新时间:2023-10-29 02:46:29 27 4
gpt4 key购买 nike

我正在处理一个如下所示的 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 文件要容易得多。

关于c++ - boost ptree-如何使用迭代器修改 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376775/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com