【发布时间】:2017-08-20 19:58:31
【问题描述】:
我有一些我试图解析的应用程序生成的 XML。在这个例子中,我试图从</element>标签解析值“值”,但似乎QXmlStreamReader期待在<value/>之后读取一些东西,但“<value/>”正是我所追求的。
源 XML 是否不正确或有办法从 QXmlStreamReader 获取此值?
QString str = "<element><value/></element>";
QXmlStreamReader xml(str);
while (!xml.atEnd()) {
xml.readNext();
qDebug() << xml.name() << xml.readElementText();
}
if (xml.hasError()) {
// Prints "Expected character data. 17"
qDebug() << xml.errorString() << xml.characterOffset();
}
有人有什么建议吗?
【问题讨论】:
-
您的 XML 格式正确。当您使用 QXmlStreamReader 时,我假设您使用的是 Qt 4.8。如果您查看the accepted answer to this question,XML 解析器的行为似乎有些奇怪?
-
xml 中的
元素没有值。那你要解析什么?此外,如果当前元素是起始元素,则必须读取值。因此,将 if (xml.isStartElement()) ...添加到您的代码中。