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

Qt Xml 添加节点

发布时间:2020-12-16 05:59:53 所属栏目:百科 来源:网络整理
导读:原先存在的xml文件 ?xml version="1.0" encoding="UTF-8"? root first 4 / first second 1 / second add 1 / add / root 不多说,直接看添加节点的代码 QString fileName = tmp_dir + "/xxx.xml" ; QDomDocument doc( "myDocument" ) ; QFile inputFile(file

原先存在的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <first>4</first>
    <second>1</second>
    <add>1</add>
</root>

不多说,直接看添加节点的代码

QString fileName = tmp_dir + "/xxx.xml";
    QDomDocument doc("myDocument");
    QFile inputFile(fileName);

    if (!inputFile.open(QFile::ReadOnly | QFile::Text))
    {
        inputFile.close();
        return;
    }

    if (!doc.setContent(&inputFile))
    {
        qDebug() << "doc.setContent() error!n";
        inputFile.close();
        return;
    }
    inputFile.close();

    QDomElement docElem = doc.documentElement();

    if (docElem.tagName() == "root")
    {
        QDomNode level_1_child_node = docElem.firstChild();

        while (!level_1_child_node.toElement().isNull())
        {
            if (level_1_child_node.toElement().tagName() == "second")
            {
                QDomElement menuOnlyElement = doc.createElement("add");
                QDomText text = doc.createTextNode("1");
                menuOnlyElement.appendChild(text);
                docElem.appendChild(menuOnlyElement);
            }

            level_1_child_node = level_1_child_node.nextSibling();
        }
    }

    if (!inputFile.open(QFile::WriteOnly | QFile::Truncate))
    {
        inputFile.close();
        return;
    }

    QTextStream ts(&inputFile); 
    ts.reset(); 
    ts.setCodec("utf-8"); 
    doc.save(ts,4,QDomNode::EncodingFromTextStream); 
    inputFile.close();

相信大家都看得懂,下面就几个点说一下
1.

QDomElement menuOnlyElement = doc.createElement("add");
                QDomText text = doc.createTextNode("1");
                menuOnlyElement.appendChild(text);
                docElem.appendChild(menuOnlyElement);

这部分代码就是添加的节点的核心了
2.

QFile::Truncate

这个属性代表覆盖原文件的内容。

(编辑:李大同)

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

    推荐文章
      热点阅读