如何在 xml 文件中循环 n 次,每个循环一个级别
How to loop n times, one level per loop in an xml file
这件事我觉得应该很容易,但几个小时后我还是想不通。我试着用谷歌搜索它,但似乎我的大脑想问这个问题的唯一方式是用 3 行解释,这对 google 不起作用。如果您有更好的表达方式,请随时编辑。
我有一个xml文件,这样说:
<tag1>
<tag2>
<tag3>
...
</tag3>
</tag2>
</tag1>
每个父文档可能有多个 tag1、tag2 和 tag3。
使用 pugixml for c++,我想对选定的节点执行操作。这是我想要完成的伪代码,但我知道这是错误的,而且不是真正可行的。
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
}
}
}
这件事我觉得应该很容易,但几个小时后我还是想不通。我试着用谷歌搜索它,但似乎我的大脑想问这个问题的唯一方式是用 3 行解释,这对 google 不起作用。如果您有更好的表达方式,请随时编辑。
我有一个xml文件,这样说:
<tag1>
<tag2>
<tag3>
...
</tag3>
</tag2>
</tag1>
每个父文档可能有多个 tag1、tag2 和 tag3。
使用 pugixml for c++,我想对选定的节点执行操作。这是我想要完成的伪代码,但我知道这是错误的,而且不是真正可行的。
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
}
}
}