Qt工作笔记-如何正确使用QXmlStreamReader(学会利用错误提示)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/82787514

今天解析一个xml,是有问题的xml,这里模拟下

xml如下,没有声明名称空间却使用了名称空间

<?xml version="1.0" encoding="GBK"?>
<root>
	<Node name="first Tree" text="hello"/>
	<Node name="Tree addition" text="how are you?"/>
	<One:a name="One a"/>
	<One:b name="One b"/>
</root>

在Qt中使用QXmlStreamReader是有提示的

因此,要写一个健壮性的程序,就不得不看官方文档,

更具这篇文档,写了个有健壮性的程序

源码如下:

main.cpp

#include <QXmlStreamReader>
#include <QApplication>
#include <QFile>
#include <QDebug>

int main(int argc, char *argv[])
{
    QFile file("E:\\Qt2018\\ProperUsageXMLReader\\my.xml");
    if(!file.open(QFile::ReadOnly|QFile::Text)){
        qDebug()<<"open failed!";
        return -1;
    }
    QXmlStreamReader reader;
    reader.setDevice(&file);

    while(!reader.atEnd()){
        reader.readNext();
        if(reader.name().toString()=="Node"){
            qDebug()<<"Node name: "<<reader.attributes().value("name").toString();
            qDebug()<<"Node text:"<<reader.attributes().value("text").toString();
        }
        /*
        *   do processing
        */
        if(reader.hasError()){
            qDebug()<<"the error is "<<reader.errorString();
            file.close();
            Q_ASSERT(!"xml file has error");
        }
    }
    file.close();
    return 0;
}

错误的XML文件,或者解析失败的XML文件,运行截图如下:

如果是正确的xml文件,

xml源码如下:

<?xml version="1.0" encoding="GBK"?>
<root>
	<Node name="first Tree" text="hello"/>
	<Node name="Tree addition" text="how are you?"/>
	<Other xmlns:One="namespace">
		<One:a name="One a"/>
		<One:b name="One b"/>
	</Other>
</root>

运行截图如下:

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/82787514