gpt4 book ai didi

c++ - QXmlStreamReader.readNextStartElement() 两次读取起始元素

转载 作者:行者123 更新时间:2023-11-28 05:55:06 25 4
gpt4 key购买 nike

我有一个 QXmlStreamReader 变量,我希望它遍历我的 xml 文件 - QFile,并通过函数 readNextStartElement() 读取所有开始元素。但它给了我每个开始标记两次

这是我的代码:

QXmlStreamReader* xmlReader = new QXmlStreamReader(orFile);
xmlReader->readNextStartElement();
std::string tagName = (orXmlReader->name()).toLocal8Bit().constData();
cout << tagName;
xmlReader->readNextStartElement();
tagName = (orXmlReader->name()).toLocal8Bit().constData();
cout << tagName;

有人可以帮我找到解决方案吗?我有另一个函数可以正常读取开始元素吗?

最佳答案

那个 API 确实令人困惑,而且 documentation对于这种特殊情况没有太大帮助。

我认为有两点值得一提:

  1. 该函数通常用于在再次调用 readNextStartElement() 之前消耗当前元素的内容的上下文中,例如readElementText() 获取内容。如果这样使用,就不会出现问题。
  2. 当位置已经是开始元素时调用函数(第一次报告标记后),函数返回false 而不改变位置。只有下一次调用才会移动位置(在好的情况下返回 true)。

因此在我们的示例中,您可以实际读取标签的内容,或者检查 readNextStartElement() 的返回值并在返回 false 时忽略它。不过,这可能会忽略一些有效的错误情况。

关于c++ - QXmlStreamReader.readNextStartElement() 两次读取起始元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334548/

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