首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QXmlStreamReader.readNextStartElement()两次读取开始元素

QXmlStreamReader.readNextStartElement()两次读取开始元素
EN

Stack Overflow用户
提问于 2015-12-17 12:25:33
回答 1查看 1.3K关注 0票数 0

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

这是我的代码:

代码语言:javascript
复制
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;

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 17:50:09

这个API确实令人困惑,对于这种特殊情况,文档没有多大帮助。

我认为有两件事值得一提:

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34334548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档