精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

Qt如何解析XML-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān) Qt如何解析XML的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的蘭溪網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

如何使用QXmlStreamReader來(lái)解析格式良好的XML,Qt的文檔中指出,它是一種更快、更方便的Qt自己的SAX解析器(QXmlSimpleReader)的替代,它也較快,在某種情況下,比DOM(QDomDocument)更方便。

XML文件:

Qt如何解析XML

解析方法:

void ParseXML::parseXML(QString file_name)
{
if(file_name.isEmpty())  
        return;  
  
    QFile *file = new QFile(file_name);  
    if(!file->open(QFile::ReadOnly | QFile::Text))
{  
QMessageBox::information(NULL, QString("title"), QString("open error!"));
        return;  
    }  
    //QXmlStreamReader操作任何QIODevice.
    QXmlStreamReader xml(file);
    QList> persons;
    //解析XML,直到結(jié)束
    while(!xml.atEnd() && !xml.hasError())
{
        //讀取下一個(gè)element.
        QXmlStreamReader::TokenType token = xml.readNext();
        //如果獲取的僅為StartDocument,則進(jìn)行下一個(gè)
        if(token == QXmlStreamReader::StartDocument)
{
            continue;
        }
        //如果獲取了StartElement,則嘗試讀取
        if(token == QXmlStreamReader::StartElement)
{
            //如果為persons,直接進(jìn)入下一個(gè)
            if(xml.name() == "persons")
{
                continue;
            }
            
//如果為person,則對(duì)其進(jìn)行解析
            if(xml.name() == "person")
{
                persons.append(this->parsePerson(xml));
            }
        }
    }
  
    if(xml.hasError())
{
QMessageBox::information(NULL, QString("parseXML"), xml.errorString());
    }
    
//從reader中刪除所有設(shè)備、數(shù)據(jù),并將其重置為初始狀態(tài)
    xml.clear();
}
 
QMap ParseXML::parsePerson(QXmlStreamReader& xml)
{
    QMap person;
    //檢查是否獲取person
    if(xml.tokenType() != QXmlStreamReader::StartElement &&
            xml.name() == "person")
{
        return person;
    }
    //獲取person屬性
    QXmlStreamAttributes attributes = xml.attributes();
    if(attributes.hasAttribute("id"))
{
        person["id"] = attributes.value("id").toString();
    }
    
//操作下一個(gè)
    xml.readNext();
    while(!(xml.tokenType() == QXmlStreamReader::EndElement &&
            xml.name() == "person"))
{
        if(xml.tokenType() == QXmlStreamReader::StartElement)
{
            if(xml.name() == "name")
{
                this->addElementDataToMap(xml, person);
            }
           
            if(xml.name() == "age")
{
                this->addElementDataToMap(xml, person);
            }
          
            if(xml.name() == "email")
{
                this->addElementDataToMap(xml, person);
            }
          
            if(xml.name() == "website")
{
                this->addElementDataToMap(xml, person);
            }
        }
     
        xml.readNext();
    }
QString id = person["id"];
    QString name = person["name"];
    QString age =  person["age"];
    QString email = person["email"];
    QString website = person["website"];
    return person;
}
 
void ParseXML::addElementDataToMap(QXmlStreamReader& xml,
                                      QMap& map) const
{
    if(xml.tokenType() != QXmlStreamReader::StartElement)
{
        return;
    }
    QString elementName = xml.name().toString();
    xml.readNext();
    
    if(xml.tokenType() != QXmlStreamReader::Characters) 
{
        return;
    }
    
    map.insert(elementName, xml.text().toString());
}

感謝各位的閱讀!關(guān)于“ Qt如何解析XML”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


當(dāng)前題目:Qt如何解析XML-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://m.jcarcd.cn/article/ddpsjp.html
主站蜘蛛池模板: 福利狠高清免费 | 日韩成人福利 | 91偶偶福利 | 九九热这里只 | 国产二区不卡 | 黑人巨大 | 久事福利资源站在线 | 国产欧洲日 | 91一区二区在线 | 欧美日韩在线一品道 | 国产一区二区精品 | 午夜在线观看亚 | 96网友上传国产 | 中文字幕国产日韩 | 国产在线看 | 日本一二三区成人 | 国产欧美日本亚洲 | 日本高清二区 | 国产精品高清尿小 | 午夜在线成人精品 | 国产日韩在线视 | 中文字幕日韩欧美 | 成人一区在线精品 | 国产自拍论坛第一页 | 亚洲无码在线免费 | 麻花豆传媒剧国 | 欧美性爱视频网 | 国产香蕉人人干干 | 日韩精品二区 | 国产美女极品粉 | 日韩午夜福利电影 | 精品国产日韩无影视 | 乱伦国产日本影视 | 九九热99最新地址 | 天美麻花星空免费 | 日韩一三区在 | 韩国成年性午夜 | 国产色片免费网址 | 国产精品素人福利 | 区三区蜜桃 | 国产合集在线播放 |