Qt读取xml文件,并写入另一个xml文件的示例

75 篇文章 2 订阅

下面的代码利用Qt的QDomDocument等类来读取xml文件exm.xml,并写入另一个文件exm2.xml

代码:


#include <QDomNode>
#include <QDomElement>
#include <QDomDocument>
#include <QFile>
#include <QDebug>
#include <QDomProcessingInstruction>


int main(int argc, char *argv[])
{
    QDomDocument domDoc, domNew("");
	//header
    QDomProcessingInstruction domInstrct = domNew.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
    QDomElement dom;
    QFile fp("exm.xml");
    if (fp.open(QFile::ReadWrite))
    {
        domNew.appendChild(domInstrct);
        domDoc.setContent(&fp, true);//读取exm.xml的内容
        auto domEle = domDoc.documentElement();//将exm.xml的内容转换为节点格式。由于xml采用一个根节点下面展开若干节点的格式,所以domEle是根节点
        qDebug() << domEle.tagName();
        qDebug() << domDoc.toString();
        auto domChild = domEle.firstChildElement();//获取根节点的第一个子节点
        auto dom = domNew.createElement(domEle.tagName());//创建一个与根节点同名的根节点
        domNew.appendChild(dom);
        while (!domChild.isNull()) {//遍历根节点
            auto n1 = domNew.createElement(domChild.tagName());//根据当前读取到的节点名字,在domNew里面再创建一个同名节点
            n1.setAttribute("value", domChild.attribute("value"));//给这个同名节点的value属性赋值
            dom.appendChild(n1);
            domChild = domChild.nextSibling().toElement();//走向下一个子节点
        }
        fp.close();
    }

	//创建新文件exm2.xml,并把domNew的内容写入
    QFile fp2("exm2.xml");
    if (fp2.open(QFile::WriteOnly | QFile::Truncate | QFile::Text)) {
        fp2.write(domNew.toString().toLatin1());
        //qDebug() << domNew.toString();
        fp2.close();
    }
}

主要语句的功能已经在代码中注释了。

完整项目见我的资源使用qt读取xml文件并写入另一个文件-C++文档类资源-CSDN下载

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值