Pugixml解析器获取元素值
pugixml parser getting element value
我有这样的XML结构:
<info>
<students>
<student>
<name>John</name>
<street>
<name>abcdef</name>
<number>55</number>
</street>
</student>
</students>
</info>
我正确地打印了name tag的值,代码是
pugi::xml_node students = doc.child("info").child("students");
for (pugi::xml_node student = students.child("name"); student; student= student.next_sibling("student"))
{
std::cout << "name '" << student.child_value("name") << "'n";
}
但是,我还需要打印name &号码标签在街上,我不能成功。
下面是显示这两个标签元素的值的代码:pugi::xml_node student = doc.child("students").child("student");
for (pugi::xml_node street = student.child("street"); street; street = student.next_sibling("street"))
{
std::cout << "name '" << student.child_value("name") << "'n";
std::cout << "number '" << student.child_value("number") << "'n";
}
但是没有显示
有谁知道是什么问题吗?
在你的循环中你仍然有student
但是它需要是street
for (pugi::xml_node street = student.child("street"); street; street = street.next_sibling("street"))
{
std::cout << "name '" << street.child_value("name") << "'n";
std::cout << "number '" << street.child_value("number") << "'n";
}
如果你将我的循环与你在问题中发布的第二个循环进行比较,你会看到我在几个地方用street
代替了student
。我猜你复制粘贴了你的第一个循环,但忘记改变这些值。
我看到你在你的问题中改变了代码-但是它仍然需要是street = street.next_sibling('street')
来循环通过所有的街道为一个特定的学生。
添加
刚刚注意到-您获得student
节点的代码缺少info
节点
:
`pugi::xml_node student = doc.child("students").child("student");`
应该是:
`pugi::xml_node student = doc.child("info").child("students").child("student");`
相关文章:
- 对于set上的循环-获取next元素迭代器
- 在 alglib::real_1d_array 中获取元素总和的奇怪错误
- 如何在 c++ stl 中获取列表中被推回的元素的地址,在常量时间内?
- push_back通过自行创建的对象获取最后一个元素的向量
- 从自定义类获取对象向量中的 max 元素
- 从 c++ 中的链表中获取元素
- 比较它们之间的元素并获取公共值的键
- 获取指向指针的指针元素 (c++)
- CPtrList - 如何获取元素的索引?
- 如何从一个容器中获取某些元素并将其转换插入到另一个容器中?
- 获取结构 c++ 中元素的索引
- 如何获取指针数组中的元素数量?
- 在std::集中获取与给定元素最接近的元素
- 无法获取已填充堆栈<char>的顶部元素
- 检查HTML 5视频元素是否正在获取帧
- 有没有函数可以直接获取 std::vector 元素的大小?
- 从矢量的元素获取指针
- 从 /dev/sd* 元素获取 /dev/disk/by-id 元素
- 2d查找重复元素/获取索引位置并计数重复项
- 为什么来自 rvalued-stl-container 的元素获取者返回左值