qt create 读XML配置文件,修改节点的属性保存qdomdocument
时间: 2024-01-25 18:03:48 浏览: 29
好的,这是一个关于 Qt 的问题。在 Qt 中使用 QDomDocument 读写 XML 文件的步骤如下:
1. 创建 QDomDocument 对象,并通过 QDomDocument::setContent() 方法将 XML 文件加载到 DOM 树中。
2. 通过 QDomDocument 对象的 documentElement() 方法获取根节点,并通过 QDomElement 的 elementsByTagName() 方法获取子节点列表。
3. 遍历子节点列表,通过 QDomNode 对象的 toElement() 方法将其转换为 QDomElement 对象,并通过 QDomElement 的 attribute() 方法获取节点的属性值。
4. 通过 QDomElement 的 setAttribute() 方法修改节点的属性值,或通过 QDomDocument 的 save() 方法将 DOM 树保存到 XML 文件中。
以下是一个简单的示例代码,演示了如何使用 QDomDocument 读取 XML 文件并修改节点的属性值:
```cpp
#include <QFile>
#include <QDomDocument>
#include <QDebug>
int main()
{
// 加载 XML 文件到 QDomDocument 对象中
QDomDocument doc;
QFile file("test.xml");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
doc.setContent(&file);
file.close();
}
// 获取根节点并遍历子节点列表
QDomElement root = doc.documentElement();
QDomNodeList children = root.elementsByTagName("child");
for (int i = 0; i < children.size(); ++i) {
QDomElement child = children.at(i).toElement();
// 获取节点的属性值并输出
QString name = child.attribute("name");
QString value = child.attribute("value");
qDebug() << "Node" << i << "name:" << name << "value:" << value;
// 修改节点的属性值
child.setAttribute("value", "new value");
}
// 将 DOM 树保存到 XML 文件中
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << doc.toString();
file.close();
}
return 0;
}
```
这段代码加载了名为 test.xml 的 XML 文件,遍历了其中所有名为 "child" 的子节点,并输出了节点的属性值。然后通过 QDomElement 的 setAttribute() 方法修改了其中一个节点的属性值,并通过 QDomDocument 的 save() 方法将 DOM 树保存到 XML 文件中。修改后的 XML 文件内容为:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child name="node1" value="new value"/>
<child name="node2" value="old value"/>
</root>
```
希望这个示例代码可以帮助你了解如何使用 QDomDocument 在 Qt 中读取 XML 文件并修改节点的属性值。