当前位置:   article > 正文

QT5——xml文件的读写_qt5 xml

qt5 xml

1、使用流QXmlStreamReader、QXmlStreamWriter读写xml文件

项目的pro文件里面添加:

QT       +=core xml
  • 1
用QXmlStreamReader读取xml文本内容

在路径C:\Users\Administrator\Desktop\ZGXIPCDemo中存放device.xml文件。内容以及各式如下:
在这里插入图片描述使用qDebug()显示读取文件的内容

#include<QFile>
#include<QXmlStreamReader>
#include<QXmlStreamWriter>
#include<QDebug>

void query_dev_xml(QString dev_xml_dir); //查询xml,dev_xml_dir是xml文件的存放地址
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//查询制定的.xml中相应信息,显示在终端
//dev_xml_dir .xml文件的存放地址
void devmanager::query_dev_xml(QString dev_xml_dir) //查询xml
{
   
    QFile file(dev_xml_dir);//
    if(!file.open(QFile::ReadOnly|QFile::Text))
    {
   
        qDebug()<<"cannot open file";
    }
    else {
   
        qDebug()<<"file opened!";
    }
    QXmlStreamReader reader;
    reader.setDevice(&file);
    while(!reader.atEnd())
    {
   
        QXmlStreamReader::TokenType type =reader.readNext();
        //根据记号的类型进行输出
        if (type==QXmlStreamReader::StartElement)
        {
   
            qDebug()<<"start element:"<<reader.name()<<"reader.text:"<<reader.text();
            if(reader.attributes().hasAttribute("id"))
            {
   
                qDebug()<<"has attribute device id="<<reader.attributes().value("id");
                qDebug()<<"version"<<reader.attributes().value("version");
                qDebug()<<"password: "<<reader.attributes().value("password");
                qDebug()<<"username: "<<reader.attributes().value("username");
                qDebug()<<"channelno: "<<reader.attributes().value("channelno");
                qDebug()<<"port: "<<reader.attributes().value("port");
                qDebug()<<"ip: "<<reader.attributes().value("ip");
                qDebug()<<"type: "<<reader.attributes().value("type");
                qDebug()<<"name: "<<reader.attributes().value("name");
                qDebug()<<"id: "<<reader.attributes().value("id");
            }
            else
            {
   
                 qDebug()<<"element has no id";
            }
        }

        if(type==QXmlStreamReader::EndElement)
            qDebug()<<" end element: "<<reader.name();
        if (type==QXmlStreamReader::Characters&&!reader.isWhitespace())
            qDebug()<<"Characters and is whitespace: "<<reader.text();
    }

    file.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55

运行结果如下:
在这里插入图片描述

使用QXmlStreamWriter编写xml文件

1、直接填写具体信息

void write_dev_xml(QString dev_xml_dir);  //写入xml数据,其它设置同上
  • 1
//将设备信息写入.xml文件中
//dev_xml_dir:.xml文件地址  devinfo:设备信息
void devmanager::write_dev_xml(QString dev_xml_dir)//, dev_info devinfo
{
   
    QFile file(dev_xml_dir);//
    if(!file.open(QFile::WriteOnly|QFile::Text|QFile::Truncate))
    {
   
        qDebug()<<"cannot open file to write";
    }
    else
    {
   
        qDebug()<<"write file opened!";
    }

    QXmlStreamWriter writer;
   // QXmlStreamReader reader;  //
    QXmlStreamAttributes attributes;   //QXmlStreamAttributes,而非QXmlStreamAttribute

    writer.setCodec("UTF-8");
    writer
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/781916
推荐阅读
相关标签
  

闽ICP备14008679号