Qt Xml文件读写例子

前言

今天又开始做XML文件读写相关的功能。再次温习一下,顺便记录一下。

正文如下

XML读取的关键在loopXmlNode方法。写入其实将XML转化成文本后进行文件写入。

 

int XMLOptUtils::read(const QString &filePath)
{
    // 0 读取成功
    // -1 文件打开失败
    // -2 文件打开成功,数据获取失败

    QDomDocument doc;
    QFile file(filePath);
    if(!file.open(QIODevice::ReadOnly)) return -1;
    if(!doc.setContent(&file)) {file.close(); return -2;}
    file.close();

    QDomElement rootElem = doc.documentElement();
    loopXmlNode(rootElem);
    return 0;
}

int XMLOptUtils::write(const QString &filePath)
{
    QDomDocument doc;
    QFile file(filePath);
    if(!file.open(QIODevice::ReadOnly)) return -1;
    if(!doc.setContent(&file)) {file.close(); return -2;}
    file.close();

    QDomElement rootElem = doc.documentElement();
    loopXmlNode(rootElem);

    QString xml = doc.toString();
    qDebug() << __FUNCTION__ << __LINE__ << "  : " << xml;

    QFile file1("E:/1.xml");
    if(!file1.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) return -1;
    file1.write(xml.toUtf8().data());
    file1.close();
    return 0;
}


void XMLOptUtils::loopXmlNode(QDomElement &nodeElem)
{
    QDomNode firstNode = nodeElem.firstChild();
    QDomElement firstElem;
    while (!firstNode.isNull())
    {
        firstElem = firstNode.toElement();
        if(!firstElem.isNull())
        {
            QDomText text = firstElem.firstChild().toText();
            text.setData("111111"); // 此处是写入
            // 此处是读取节点
            qDebug() << __FUNCTION__ << __LINE__ << "  : " <<  firstElem.nodeName() << firstElem.text()
                     ;
            loopXmlNode(firstElem);
        }
        firstNode = firstNode.nextSibling();
    }
}

写入部分截图

%title插图%num

 

总结

上面的文件读写方式还是有性能问题。小文件还OK。

版权声明:
作者:小何
链接:https://ligo100.cn/houduanjishu/qt/232.html
来源:小何博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录