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;
}