Qt Xml文件读写例子

前言 今天又开始做XML文件读写相关的功能。再次温习一下,顺便记录一下。 正文如下 XML读取的关键在loop […]

前言

今天又开始做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();
    }
}

写入部分截图

 

总结

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

版权声明
文章标题:Qt Xml文件读写例子
文章链接:https://blog.chiyuba.com/houduanjishu/qt/232.html
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,转载或引用请注明出处。
温馨提示:本文最后更新于 2025年7月9日,部分内容可能存在时效性,请注意甄别。

相关推荐

更多教程
Qt中QTableView/QTreeView/QListView添加QWidget Qt Qt中QTableView/QTreeView/QListView添加QWidget

前言 最近的项目开发中,需要用到在QTa...

6 浏览
Qt QString转double保留两位小数 Qt Qt QString转double保留两位小数

实现方法 QString str; do...

1 浏览
Qt 设置窗口的层级关系 Qt Qt 设置窗口的层级关系

前言 我有一个需求:窗体A 和窗体B是同...

2 浏览

评论