QT 读取XML文件失败,请大神帮忙

niepangu 2016-04-15 09:18:40

学习QT读取XML文件过程中,出现如下问题
parse xml error : "unexpected end of file" line 1 col 1
还请高手帮忙解决。

下面是我的工程文件

ReadXML.pro文件
#-------------------------------------------------
#
# Project created by QtCreator 2016-04-15T10:25:36
#
#-------------------------------------------------

QT += core gui xml
#QT += xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ReadXML
TEMPLATE = app


SOURCES += main.cpp\
widget.cpp

HEADERS += widget.h

FORMS += widget.ui

CONFIG += mobility
MOBILITY =

widget.h文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private:
Ui::Widget *ui;

bool parseXML(const QString &filename);
};

#endif // WIDGET_H





widget.cppc文件
#include "widget.h"
#include "ui_widget.h"
#include <QDomDocument>
#include <QFile>
#include <QDebug>
#include <QDomElement>
#include <QTableWidgetItem>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
parseXML("contact.xml");

}

Widget::~Widget()
{
delete ui;
}

bool Widget::parseXML(const QString &filename)
{
QDomDocument doc; //学习文件操作知识
QFile file(filename);
if(file.open(QIODevice::ReadOnly))
{
qDebug() << "open file" << filename << "fileed" ;
return false;
}




QString strError;
int ErrLine;
int ErrCount;
//出错位置
if(!doc.setContent(&file,&strError,&ErrLine,&ErrCount))
{
qDebug() << "parse xml error : " << strError << " line " << ErrLine << " col " << ErrCount;
file.close();
return false;
}

file.close();

QDomElement element = doc.documentElement().firstChildElement("people");


quint8 tablenum;
tablenum = 0;
while(!element.isNull())
{
// contact = new Contact;
ui->tableWidget->setItem(tablenum,tablenum,new QTableWidgetItem(element.attribute("name")));
QDomElement Child = element.firstChildElement("mobile");
if(Child.isNull())
{
ui->tableWidget->setItem(tablenum,tablenum,new QTableWidgetItem(Child.text()));

}
//contacts.append(contact);
element = element.nextSiblingElement("people");
tablenum++;
}
return true;
}


我的xml文件
contact.xml
<?xml version='1.0' encoding='UTF-8'?>
<peoples>
<!-- comment, peoples -->
<people name="John">
<mobile>13302901234 <![CDATA[<primary>]]> </mobile>
</people>
<people name="Mary">
<mobile>13902905678</mobile>
</people>
</peoples>
...全文
838 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qcgao 2016-04-19
  • 打赏
  • 举报
回复
if(file.open(QIODevice::ReadOnly)) 是不是要改成 if(!file.open(QIODevice::ReadOnly)) 还有xml的文件位置不要放错。 然后就可以正常输出了。

16,233

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧