加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

QT开发之XML(Stream接口)

发布时间:2020-12-16 02:11:38 所属栏目:百科 来源:网络整理
导读:从Qt 4.3开始引用了两个新的类来读取和写入XML文档:QXmlStreamReader和QXmlStreamWriter. 这个比SAX框架更简单,操作也更加方便.一些操作事件类型和一去看帮助文档. 新建控制台应用,名称为myXmlStream .在 myXmlStream .pro中添加 QT +=xml main.cpp #include

从Qt 4.3开始引用了两个新的类来读取和写入XML文档:QXmlStreamReader和QXmlStreamWriter. 这个比SAX框架更简单,操作也更加方便.一些操作事件类型和一去看帮助文档.

新建控制台应用,名称为myXmlStream .在myXmlStream.pro中添加 QT +=xml


main.cpp


#include <QtCore/QCoreApplication>
#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QDebug>

void WirteXml(char *filename)
{
    QFile file(filename);
    if (!file.open(QFile::WriteOnly | QFile::Text))
    {
        qDebug() << "Error: cannot open file";
        return ;
    }

    QXmlStreamWriter stream(&file);
    stream.setAutoFormatting(true);
    stream.writeStartDocument();
    stream.writeStartElement("bookmark");
    stream.writeAttribute("href","http://blog.csdn.net/qq_21792169");
    stream.writeTextElement("title","Linux_Google");
    stream.writeEndElement();
    stream.writeEndDocument();

    file.close();

    qDebug() << "write finished!";

}

void ReadXml(char *filename)
{
    QFile file(filename);
    if (!file.open(QFile::ReadOnly | QFile::Text))
    {
        qDebug()<<"Error: cannot open file";
        return ;
    }

    QXmlStreamReader reader;

    reader.setDevice(&file);


    while (!reader.atEnd()) {

        QXmlStreamReader::TokenType type = reader.readNext();


        if (type == QXmlStreamReader::StartDocument)
            qDebug() << reader.documentEncoding() << reader.documentVersion();

        if (type == QXmlStreamReader::StartElement) {
            qDebug() << "<" << reader.name() << ">";
            if (reader.attributes().hasAttribute("id"))
                qDebug() << reader.attributes().value("id");
        }

        if (type == QXmlStreamReader::EndElement)
            qDebug() << "</" << reader.name() << ">";

        if (type == QXmlStreamReader::Characters && !reader.isWhitespace())
            qDebug() << reader.text();
    }


    if (reader.hasError())
    {
        qDebug() << "error: " << reader.errorString();
    }

    file.close();


}

int main(int argc,char *argv[])
{
    QCoreApplication a(argc,argv);

    ReadXml("./my.xml");
    WirteXml("./my2.xml");
    return a.exec();
}



my2.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookmark href="http://blog.csdn.net/qq_21792169">
    <title>Linux_Google</title>
</bookmark>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读