Qt工作筆記-Qt文件閱讀筆記-QXmlStreamReader::qualifiedName()如何解析帶限制符的XML
阿新 • • 發佈:2018-12-10
目錄
官方解析
QXmlStreamReader::qualifiedName() 返回StartElement或EndElement的限制名; 限制名是XML資料中元素的原始名稱。他有一個字首和一個字尾,字尾的元素叫本地名。因為名稱空間的字首不是唯一的(相同的字首可以指不同的名稱空間,不同的字首可以指向相同的名稱空間)這個時候就不該使用qualifiedName(),而應該使用namepaceUri()與attributs中的local name()。
博主例子
如下面的xml,如何解析帶":"這個符號的xml
xml原始碼如下:
<?xml version="1.0" encoding="GBK"?> <root> <Node name="first Tree" text="hello"/> <Tree:name name="Tree addition" text="how are you?" msg="how old are you?"/> </root>
Qt原始碼如下:
main.cpp
#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.qualifiedName().toString()=="Tree:name"){ 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; }
執行截圖如下: