gpt4 book ai didi

c++ - RapidXml:无法从 XML 文件中获取子项

转载 作者:行者123 更新时间:2023-11-27 23:24:52 24 4
gpt4 key购买 nike

使用以下 C++ 代码,使用 RapidXml 库,我只能在顶层获取 XML 元素,而不能获取子元素:

char *text = ... // XML file shown below
using namespace rapidxml;
xml_document<> doc;
doc.parse<0>(text);
xml_node<> *node = doc.first_node();
while(node != 0) {
cout << node->name() << " " << node->value() << endl;
node = node->next_sibling(); // <-- ???
}

XML 文件:

<parent>
<child>123</child>
</parent>
<parent>
<child>456</child>
</parent>

实际结果:

parent
parent

预期结果:

parent
child 123
parent
child 456

我怎样才能得到 child ?

谢谢!

最佳答案

第二个 parent 是第一个的 sibling (“ sibling ”处于同一级别 - 就像现实生活中的 sibling 一样)。

node->first_node() 将是 node 的第一个子节点。

以下(未编译和未测试的)代码应该会产生您想要的输出:

xml_node<> *node = doc.first_node();
while(node != 0) {
cout << node->name() << endl;
xml_node<> *child = node->first_node();
while (child != 0)
{
cout << child->name() << " " << child->value() << endl;
child = child->next_sibling();
}
node = node->next_sibling();
}

关于c++ - RapidXml:无法从 XML 文件中获取子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122278/

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