Qt之Dom添加和修改节点

使用QtXml模块DOM模式操作XML时,添加修改节点直接使用QDomElement的setNodeValue()方法不起作用,研究好久才发现使用方法有问题,正确方法如下:


1、添加节点

QDomElement root = doc.documentElement();
QDomElement newElem = doc.createElement("test");
QDomText newText = doc.createTextNode("你好");
newElem.appendChild(newText);
root.appendChild(newElem);

2、修改节点

	 
QDomElement root = doc.documentElement();
QDomNode node = root.firstChild();	
node.firstChild().setNodeValue("1234");
	


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于 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 文件并修改节点的属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值