我尝试在QDomDocument对象中使用setContent()时遇到问题。

这是代码:

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();


它打印:

Error: unexpected end of file at line 1 column 1

我该如何解决这个错误?

这是文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<myLibrary>
<movie>
    <price>5</price>
    <title>Star Wars 4</title>
    <register>George Lukas</register>
    <year>1977</year>
    <durate>192</durate>
</movie>
<movie>
    <price>8</price>
    <title>Rambo 1</title>
    <register>Joe Clarkson</register>
    <year>2012</year>
    <durate>167</durate>
</movie>
</myLibrary>

最佳答案

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

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

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


我猜您没有注意到Error: file not correctly opened.警告,对吗?

关于c++ - QDomDocument:setContent()返回false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42117178/

10-11 22:44