无法使用QTextStream从xml文件中读取数据

时间:2013-10-25 11:22:59

标签: xml qt qfile qtextstream

我尝试使用QTextStream从xml文件中读取数据,但最后我得到了空字符串。 这是我的代码:

QFile f("note.xml");
if(f.open(QIODevice::ReadWrite)){
    QTextStream in(&f);
    in.setCodec("UTF-8");
    qDebug()<<in.readAll();
}else qDebug()<<"failed";

以下是xml文件的内容:

<?xml version="1.0" encoding="UTF-8" ?>
<note>
<to>George</to>
</note>

我正在使用Qt_version 5.1.1和MinGW_32bit-Debug,Windows 7.如果我将xml文件更改为txt文件,结果仍为空字符串。

1 个答案:

答案 0 :(得分:3)

我认为您的问题可能与您没有将完整路径传递给QFile构造函数有关。如果文件不在当前路径中,则对QFile :: open的调用可能会成功(可能是因为您在读取和写入模式下打开)创建新文件,因此读取返回空字符串。为避免这种情况,您可以检查文件是否存在。尝试将代码更改为以下内容:

QFile f("/complete-path/note.xml");
if(f.exists() && f.open(QIODevice::ReadWrite) {
    . . .
编辑:正如汉克在评论中提出的那样。 :)