我有一个QXmlStreamReader变量,我希望它遍历我的xml文件-QFile,并通过函数readNextStartElement()读取所有start元素。 但它给了我每个开始标记两次。
这是我的代码:
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;
有人可以帮我找到解决方案吗?我还有另一个能正常读取起始元素的函数吗?
答案 0 :(得分:1)
该API确实令人困惑,documentation对这种特殊情况没有多大帮助。
我认为有两件事值得一提:
false
而不更改位置。只有下一个调用移动位置(并在好的情况下返回true
)。因此,在我们的示例中,您可以实际读取标记的内容,或者检查readNextStartElement()的返回值,并在返回false
时忽略它。然而,这可能会忽略一些有效的错误情况。