qt中xml修改节点的值
时间: 2024-05-02 07:16:58 浏览: 18
在Qt中,可以使用QDomDocument和QDomElement类来修改XML文件中的节点的值。
首先,需要打开XML文件并将其解析为QDomDocument对象:
```cpp
QFile file("example.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QDomDocument doc;
if (!doc.setContent(&file))
{
file.close();
return;
}
file.close();
```
接下来,可以使用QDomDocument的方法来查找和修改节点的值。例如,假设XML文件中有以下元素:
```xml
<root>
<item id="1">foo</item>
<item id="2">bar</item>
</root>
```
可以使用以下代码来查找id为1的元素并将其值修改为"hello":
```cpp
QDomElement root = doc.documentElement();
QDomNodeList items = root.elementsByTagName("item");
for (int i = 0; i < items.size(); ++i)
{
QDomElement item = items.at(i).toElement();
if (item.attribute("id") == "1")
{
item.firstChild().setNodeValue("hello");
break;
}
}
```
最后,需要将修改后的QDomDocument保存回XML文件中:
```cpp
QFile outFile("example.xml");
if (!outFile.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&outFile);
out << doc.toString();
outFile.close();
```
完整的代码示例:
```cpp
QFile file("example.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QDomDocument doc;
if (!doc.setContent(&file))
{
file.close();
return;
}
file.close();
QDomElement root = doc.documentElement();
QDomNodeList items = root.elementsByTagName("item");
for (int i = 0; i < items.size(); ++i)
{
QDomElement item = items.at(i).toElement();
if (item.attribute("id") == "1")
{
item.firstChild().setNodeValue("hello");
break;
}
}
QFile outFile("example.xml");
if (!outFile.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&outFile);
out << doc.toString();
outFile.close();
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)