Qt 代码实现xml文件的增删改查,函数在特定QDomELement下的增加子节点,删除节点,修改节点,最终保存xml文件。例如:在父节点root下添加variant的一个QDomElement,其属性有id<唯一标识>,name,value.
时间: 2024-02-21 16:01:15 浏览: 80
Qt对xml文件的增删改查(附带可运行例子)
4星 · 用户满意度95%
好的,我可以为您提供一个基于Qt的XML文件的增删改查的示例代码,具体如下:
```c++
#include <QCoreApplication>
#include <QFile>
#include <QtXml/QDomDocument>
#include <QtXml/QDomElement>
#include <QtXml/QDomNode>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("data.xml");
if(!file.open(QIODevice::ReadWrite | QIODevice::Text))
{
qDebug() << "Failed to open file!";
return -1;
}
QDomDocument doc;
if(!doc.setContent(&file))
{
qDebug() << "Failed to load document!";
file.close();
return -1;
}
// 获取根节点root
QDomElement root = doc.documentElement();
// 添加variant节点
QDomElement variant = doc.createElement("variant");
variant.setAttribute("id", "001");
variant.setAttribute("name", "variant1");
variant.setAttribute("value", "10");
root.appendChild(variant);
// 删除variant节点
QDomNodeList nodeList = root.elementsByTagName("variant");
for(int i = 0; i < nodeList.count(); i++)
{
QDomElement element = nodeList.at(i).toElement();
if(element.attribute("id") == "001") // 删除id为001的节点
{
root.removeChild(nodeList.at(i));
break;
}
}
// 修改variant节点
QDomNodeList nodeList2 = root.elementsByTagName("variant");
for(int i = 0; i < nodeList2.count(); i++)
{
QDomElement element = nodeList2.at(i).toElement();
if(element.attribute("id") == "002") // 修改id为002的节点
{
element.setAttribute("value", "20");
break;
}
}
// 保存XML文件
file.resize(0);
QTextStream stream(&file);
doc.save(stream, 4);
file.close();
return a.exec();
}
```
以上代码实现了在根节点root下添加variant节点,删除id为001的variant节点,修改id为002的variant节点的value属性,并最终保存XML文件。您可以根据您的实际需求进行修改。
阅读全文