Qt工作笔记-Qt文档阅读笔记-qualifiedName()的官方解析及XML使用名称空间

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

目录

官方解析

博主例子


官方解析

QXmlStreamReader::qualifiedName()
返回StartElement或EndElement的限制名;
限制名是XML数据中元素的原始名称。他有一个前缀和一个后缀,后缀的元素叫本地名。因为名称空间的前缀不是唯一的(相同的前缀可以指不同的名称空间,不同的前缀可以指向相同的名称空间)这个时候就不该使用qualifiedName(),而应该使用namepaceUri()与attributs中的local name()。

博主例子

这里举个例子,当xml代码如下时

<?xml version="1.0" encoding="GBK"?>

<root>
	<Node name="first Tree" text="hello"/>
	<Tree name="Tree addition" text="how are you?" msg="how old are you?"/>
	<Other xmlns:One="namespace">
		<One:a name="One a"/>
		<One:b name="One b"/>
	</Other>
</root>

可以用如下代码进行解析(这里用打印来模型下):

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

int main(int argc, char *argv[])
{
    QFile file("E:\\Qt2018\\qualifiedNameInXML\\my.xml");
    if(!file.open(QFile::ReadOnly|QFile::Text)){
        qDebug()<<"open failed!";
        return 0;
    }

    QXmlStreamReader reader;
    reader.setDevice(&file);

    while(!reader.atEnd()){
        reader.readNext();
        if(reader.name().toString()=="Node"){
            qDebug()<<reader.attributes().value("name").toString();
            qDebug()<<reader.attributes().value("text").toString();
        }
        else if(reader.prefix().toString()=="One"){
            qDebug()<<reader.qualifiedName();
            qDebug()<<reader.attributes().value("name").toString();
            qDebug()<<reader.attributes().value("text").toString();
            qDebug()<<reader.attributes().value("msg").toString();
        }

    }
    file.close();

    return 0;
}

程序运行截图如下:

猜你喜欢

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