gpt4 book ai didi

c++ - boost 认识 child

转载 作者:太空宇宙 更新时间:2023-11-04 13:43:44 25 4
gpt4 key购买 nike

我的问题与:boost 有关

一些 boost 代码可以正确地找到一个节点有子节点,但如果一个节点有两个其他节点,它就无法识别这些子节点。

递归调用能够读取所有树节点,然后将值的拷贝应用到 google protocol buffer

void ReadXML(iptree& tree, string doc)
{
const GPF* gpf= pMessage->GetGPF();
for(int i = 0 ; i < gpf->field_count(); ++i)
{
string fieldName = GetName(i);
boost::optional< iptree & > chl = pt.get_child_optional(fieldName);
if(chl) {
for( auto a : *chl ){
boost::property_tree::iptree subtree = (boost::property_tree::iptree) a.second ;
assignDoc(doc);
ReadXML(subtree, doc);
}
}
}
}

XML文件

<?xml version="1.0" encoding="utf-8"?>
<nodeA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<nodeA.1>This is the Adresse</nodeA.1>
<nodeA.2>
<node1>
<node1.1>
<node1.1.1>Female</node1.1.1>
<node1.1.2>23</node1.1.2>
<node1.1.3>Engineer</node1.1.3>
</node1.1>
<node1.1>
<node1.2.1>Female</node1.2.1>
<node1.2.2>35</node1.2.2>
<node1.2.3>Doctors</node1.2.3>
</node1.1>
</node1>
</nodeA.2>
<nodeA.3>Car 1</nodeA.3>
</nodeA>

我的问题是 node1 未被识别为有 child 。不知道是不是因为有两个同名的子节点。

请注意,XML 文件可能会从一个客户端更改为另一个客户端。我可能有不同的节点。

我必须使用 a.second 还是 a.first

最佳答案

这里

boost::optional< iptree & > chl =  pt.get_child_optional(fieldName);

您明确搜索具有给定名称的 child 。这个名字在递归过程中似乎永远不会改变。在每个级别上,您都在寻找具有相同名字的 child 。

关于c++ - boost 认识 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785787/

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