gpt4 book ai didi

c++ - 如何循环 n 次,在 xml 文件中每个循环一个级别

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:32 25 4
gpt4 key购买 nike

这是我觉得应该很容易的事情,但经过几个小时后我还是想不通。我试着用谷歌搜索它,但似乎我的大脑想问这个问题的唯一方式是用 3 行解释,这对谷歌来说并不适用。如果您有更好的表达方式,请随意编辑。

我有一个 xml 文件,这样说:

<tag1>
<tag2>
<tag3>
...
</tag3>
</tag2>
</tag1>

每个父文档可能有多个 tag1、tag2 和 tag3。

使用适用于 C++ 的 pugixml,我想对所选节点执行操作。这是我想要完成的伪代码,但我知道这是错误的,而且不是真正可行的。

for(pugi::xml_node tag1 : doc->child("tag1").children()){
//Do something with tag1
for(pugi::xml_node tag2 : doc->child("tag1").child("tag2").children()){
//Do something with tag2
for(pugi::xml_node tag3 : doc->child("tag1").child("tag2").child("tag3").children()){
//Do something with tag3
}
}

只要看看这个,就很容易找到不起作用的东西......我需要能够与 doc.child().child().child().child()... .. 在循环内。必须为每次迭代添加 .child() 阻止我做一些递归风格的事情,例如:

void loopXNestedTimes(int n){

if(n==0) return;
// Do my stuff
loopXNestedTimes(n-1);
}

知道我会怎么做吗?我正在使用 Qt 和 C++,但我仍在学习这两种语言,因此我可能缺少允许此操作的语言功能。

最佳答案

使用tag1获取tag2元素(而不是doc)并使用tag2获取 tag3 元素,我认为这是你遗漏的关键点。

您的代码片段应如下所示:

for (pugi::xml_node tag1 : doc->child("tag1").children()){
//Do something with tag1
for (pugi::xml_node tag2 : tag1.child("tag2").children()){
//Do something with tag2
for (pugi::xml_node tag3 : tag2.child("tag3").children()){
//Do something with tag3
}
}
}

关于c++ - 如何循环 n 次,在 xml 文件中每个循环一个级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709873/

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