XML文件读写

7 篇文章 0 订阅
1 篇文章 0 订阅

XML文件格式

/*xml文件格式:<Partition_Info>为根节点,part为子节点,Sel、PartitionName...为属性
<?xml version="1.0" encoding="GB2312" ?>
<Partition_Info>
<Part Sel="1" PartitionName="fastboot" FlashType="nand" FileSystem="none" Start="0" Length="1M" SelectFile="C:\Users\maorui\Desktop\image_mv310_23\fastboot-burn.bin"/>
<Part Sel="1" PartitionName="bootargs" FlashType="nand" FileSystem="none" Start="1M" Length="512K" SelectFile="C:\Users\maorui\Desktop\image_mv310_23\bootargs_ubi.bin"/>
<Part Sel="0" PartitionName="bootargsbak" FlashType="nand" FileSystem="none" Start="1536K" Length="512K" SelectFile=""/>
</Partition_Info>
 */

XML文件读


    QDomDocument doc;
    QString filename_load = QFileDialog::getOpenFileName(this, "加载配置", "/", "xml files(*.xml);");
    QFile file(filename_load);

    if(!file.open(QIODevice::ReadOnly))
    {
        return;
    }

    if(!doc.setContent(&file))
    {
        file.close();
        return;
    }

    file.close();

    QDomElement DocElem = doc.documentElement();
    QDomElement node = DocElem.firstChildElement();

    while(!node.isNull())
    {
        QString type = node.attribute("FlashType");//根据属性,读取对应的值

        QString system = node.attribute("FileSystem");

        QString check = node.attribute("Sel");

        reinterpret_cast<QLineEdit*>(ui->tableWidget->cellWidget(num, 5))->setText(node.attribute("Start"));//强制将QWidget表的cellwidget转换成QlineEdit
        num++;
        node = node.nextSiblingElement();//递归
    }
}

XML文件写


void MainWindow::on_savecfg_clicked()
{
    QDomDocument doc;//创建XML文件
    QDomProcessingInstruction instruction = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");

doc.appendChild(instruction);

QDomElement root = doc.createElement("Partition_Info");//增加根节点
doc.appendChild(root);

int num = ui->tableWidget->rowCount();

for(int i = 0; i<num; i++)
{
    QDomElement part = doc.createElement("Part");

    part.setAttribute("Sel",reinterpret_cast<QCheckBox*>(ui->tableWidget->cellWidget(i,0))->isChecked()? 1 : 0);//增加属性,值

    root.appendChild(part);//将节点添加到根节点上
}

QString filename_save = QFileDialog::getSaveFileName(this, "保存配置", "/", "xml files(*.xml)");
QFile file(filename_save);

QTextStream out(&file);//将xml文件内容写到文件file上
out.setCodec("UTF-8");
doc.save(out,4,QDomNode::EncodingFromTextStream);//将xml文件内容写到文件file上

return;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值