Qt用Dom写XML文件

这篇博客详细介绍了如何利用Qt的DOM模型来创建和操作XML文件,涵盖了所需的头文件导入以及具体实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依赖的头文件

    #include <QFile>   
    #include <QString>  
    #include <QtXml>  
    #include <QDomDocument>  
    #include <QDateTime>  
示例代码1:
    QFile file("write.xml");  
    if(!file.open(QIODevice::WriteOnly|QIODevice::Truncate));  
    QDomDocument doc;  
    QDomProcessingInstruction instruction;  
    instruction = doc.createProcessingInstruction("xml","version=/"1.0/" encoding=/"UTF-8/"");  
    doc.appendChild(instruction);  
    QDomElement root=doc.createElement(tr("data"));  
    doc.appendChild(root);  
    QDomElement StartWeek=doc.createElement(tr("startweek"));  
    QDomElement ReadNumber=doc.createElement(tr("readnum"));  
    QDomElement AlarmTime=doc.createElement(tr("alarm"));  
    QDomElement AlarmPrompt=doc.createElement(tr("prompt"));  
    QDomText text;  
    text=doc.createTextNode("2010-03-01");  
    StartWeek.appendChild(text);  
    text=doc.createTextNode("2");  
    ReadNumber.appendChild(text);  
    text=doc.createTextNode("10");  
    AlarmTime.appendChild(text);  
    text=doc.createTextNode("vibration");  
    AlarmPrompt.appendChild(text);  
    root.appendChild(StartWeek);  
    root.appendChild(ReadNumber);  
    root.appendChild(AlarmTime);  
    root.appendChild(AlarmPrompt);  
    QTextStream out(&file);  
    doc.save(out,4);  
    file.close();  
示例代码2:
    //写xml操作。sXmlFilePath:要写入的xml文件路径  
    int CAppletGenerator::addTaskMenuTreeItem(QString sXmlFilePath)  
    {  
        QFile file(sXmlFilePath);  
        if (!file.open(QFile::ReadOnly | QFile::Text)) {  
            return -1;  
        }  
      
        QDomDocument domDocument;  
        if (!domDocument.setContent(&file, true)) {  
            file.close();  
            return -1;  
        }  
        QDomElement tree      = domDocument.documentElement();  
        QDomElement firstItem = tree.firstChildElement();  
      
        //在firstitem上添加一个节点  
        QDomElement secondItem = domDocument.createElement("item");  
      
        //获取当前时间,用于节点的唯一性id  
        QDateTime dt;  
        QTime time;  
        QDate date;  
        dt.setTime(time.currentTime());  
        dt.setDate(date.currentDate());  
        QString currentDate = dt.toString("yyyyMMddhhmmss");  
      
        //为节点添加属性  
        secondItem.setAttribute("id",currentDate);  
        secondItem.setAttribute("select","1");  
        secondItem.setAttribute("text","节点");  
      
        //添加元素节点到父节点  
        firstItem.appendChild(secondItem);  
        file.close();  
      
        QFile fileModify(sXmlFilePath);  
        if (!fileModify.open(QFile::WriteOnly | QFile::Text)){  
            return -1;  
        }  
      
        //核心代码:Dom方式写xml文件  
        QTextStream out(&fileModify);  
        domDocument.save(out,4);  
        fileModify.close();  
        return 0;  
      
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值