C++ QDomDocument:setContent()返回false

C++ QDomDocument:setContent()返回false,c++,qt,c++11,C++,Qt,C++11,尝试将setContent用于QDomDocument对象时出现问题 代码如下: QFile f("database.xml"); if(!f.open(QFile::ReadOnly)) cout << "Error: file not correctly opened." << endl; QDomDocument doc("database"); QString errorStr; int errorLine; int errorColumn; if(!d

尝试将setContent用于QDomDocument对象时出现问题

代码如下:

QFile f("database.xml");
if(!f.open(QFile::ReadOnly))
    cout << "Error: file not correctly opened." << endl;

QDomDocument doc("database");
QString errorStr;
int errorLine;
int errorColumn;
if(!doc.setContent(&f, false, &errorStr, &errorLine, &errorColumn)){
    cout << "Error: " << errorStr.toStdString() << " at line " << errorLine << " column " << errorColumn << endl;
}
f.close();

因此,问题是XML文件的路径无效

如果试图打开与可执行文件位于同一目录中的文件,请使用返回所需路径的方法。否则将使用进程工作目录,该目录并不总是可执行目录

QFile f(QCoreApplication::applicationDirPath() + "/database.xml");

我猜您没有注意到错误:文件未正确打开。警告,是吗?

不要使用空文件或具有有效的xml头—只是猜测而已。可以发布xml的前两行吗?请尝试在QFile构造函数中指定xml的绝对路径。哇,这很有效!但是为什么它会起作用呢?如果不给我一个错误,我怎么能不指定绝对路径呢@kefir500谢谢@卢比兹:请看我的答案。@卢比兹:如果这个答案对您有帮助,我将非常感谢您投票并/或将其标记为已接受。
QFile f(QCoreApplication::applicationDirPath() + "/database.xml");