RapidXml:无法从 XML 文件中获取子项
RapidXml: cannot get children from XML file
使用以下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
我怎样才能得到孩子?
谢谢!
第二个parent
是第一个的兄弟姐妹("兄弟姐妹"处于同一水平 - 就像现实生活中的兄弟姐妹一样)。
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();
}
首先,您可以将XML数据保存到文件中,例如"1.xml"
<parent>
<child>123</child>
</parent>
<parent>
<child>456</child>
</parent>
那么我认为你可以这样做:
void Parse(std::string strFilePath)
{
rapidxml::file<> docFile(strFilePath.c_str());
rapidxml::xml_document<> doc;
doc.parse<0>(docFile.data());
rapidxml::xml_node<> *pNode = doc.first_node();
for (; pNode != NULL; pNode = pNode->next_sibling())
{
std::cout << pNode->name() << std::endl;
for (rapidxml::xml_node<> *pChildNode = pNode->first_node(); pChildNode != NULL; pChildNode = pChildNode->next_sibling())
{
std::cout << " " << pChildNode->name() << " " << pChildNode->value() << std::endl;
}
}
}
相关文章:
- 获取文件数据预处理器宏
- 如何在Windows内核中获取文件大小
- 从 C 中的变量获取文件的路径,C++
- 如何使用 C/C++ 和 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
- 如何使用 jpeglib.h 获取文件是否为 JPEG 类型
- 谁能告诉我,程序中的错误是什么?该程序仅用于获取文件扩展名
- 我需要通过窗口句柄(HWND)获取文件,我该怎么办?
- 如何用C++部分地获取文件中的行
- 使用内置的Windows方法获取文件夹的内容
- 在 Apache Velocity 模板语言中获取文件目录
- 如何在C#或C++中获取文件或文件夹的有效权限?有什么 API 吗?
- 对字符求和并减去以获取文件
- 从 FutureAccessList 同步获取文件夹路径
- 通过HTTPS从POCO StreamCopier获取文件下载进度
- 如何使用C 17获取文件大小
- getline 无法获取文件的第一行
- 如何使用 Win API 获取文件夹中的文件列表(带过滤器)
- 无法从零MQ ZMQ_SERVER套接字中获取文件描述符
- HttpQueryInfo 获取文件大小
- 通过文件资源管理器获取文件夹目录