McL*_*Lan 3 c++ qt qfile qxmlstreamreader
我想读一个xml文件如下:
QFile myFile("xmlfile");
Run Code Online (Sandbox Code Playgroud)
然后继续从以下开始解析xml:
QXmlStreamReader xmlData(myFile);
Run Code Online (Sandbox Code Playgroud)
..我得到的错误是:
no matching function for call to 'QXmlStreamReader::QXmlStreamReader(QFile&)'
Run Code Online (Sandbox Code Playgroud)
那么问题是什么以及如何解决呢?
问题更新:根据下面选择的答案,代码现在正在运行,没有语法错误.
但是,我无法读取我的xml.在解析xml时,我使用以下内容来读取xml元素:
QXmlStreamReader::TokenType token = xmlElements.readNext();
Run Code Online (Sandbox Code Playgroud)
然后这段代码用于检查startElements:
while(!xmlElements.atEnd() && !xmlElements.hasError()){ // the breakpoint is here
do ...
}
Run Code Online (Sandbox Code Playgroud)
所以,在这个断点处,我在debuger中注意到令牌值是 QXmlStreamReader::Invalid(1)
所以,发生了什么..是我的QStreamReader不读取文件为xml,或者它读取它但xml本身有错误?
错误消息告诉您没有构造函数用于QXmlStreamReader具有您尝试调用的签名的类,即QFile仅接受参数(通过值或通过引用)的构造函数.阅读文档非常有用.相关提取物:
QXmlStreamReader ()
QXmlStreamReader ( QIODevice * device )
QXmlStreamReader ( const QByteArray & data )
QXmlStreamReader ( const QString & data )
QXmlStreamReader ( const char * data )
Run Code Online (Sandbox Code Playgroud)
现在,如果您知道QFile实际继承QIODevice(您也可以在文档中找到),那么您可以立即了解调用应该如下更改:
QXmlStreamReader xmlData(&myFile);
Run Code Online (Sandbox Code Playgroud)
此外,您似乎根本不知道如何使用QXmlStreamReader,因此您正在寻找的是一个教程.我不想在这里重写很棒的Qt教程.因此,为了拦截您所有进一步的问题,我会向您推荐官方教程.