QDomDocument读写XML文件

XML文件大家应该都很熟悉,与ini一样,xml也是常用的软件配置文件格式。

在读写一个xml文件之前, 首先要做的工作是设计好xml文件的结构。

XMLSpy这个工具在xml设计方面有显著的优势,本人使用的是XMLSpy  2015,可以上官网http://www.altova.com/download-trial.html下载,并申请试用版本的序列号。

设计完的结构如下:

设计完结构之后,可以导出例子xml文件如下:

到这里,我们的xml文件就设计好了,剩下的就是用Qt来实现xml的读写操作。

Qt中实现对xml读写操作的类是QDomDocument相关的类,一般情况下需要包含下列三个头文件:

#include <QFile>   
#include <QtXml\QtXml>
#include <QtXml\QDomDocument> 


(1)写XML

主要会用到下面的几个函数:

QDomDocument doc;
QDomProcessingInstruction instruction = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
doc.appendChild(instruction);

QDomElement root = doc.createElement("HInfoData");//创建根节点
doc.appendChild(root);//添加根节点

QDomElement strMac = doc.createElement("Mac");//创建元素节点
root.appendChild(strMac);//添加元素节点到根节点
QDomText strMacNodeText = doc.createTextNode(data._strMac);//创建元素文本
strMac.appendChild(strMacNodeText);//添加元素文本到元素节点

保存成xml文件

QFile file("./test.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
	return false;
QTextStream out(&file);
out.setCodec("UTF-8");
doc.save(out, 4, QDomNode::EncodingFromTextStream);
file.close();

(2)读XML

QDomDocument doc;
QFile file("./test.xml");
if (!file.open(QIODevice::ReadOnly))
{
	return false;
}

if (!doc.setContent(&file)) 
{
	file.close();
	return false;
}
file.close();

QDomElement root = doc.documentElement();//读取根节点
QDomNode node = root.firstChild();//读取第一个子节点
while (!node.isNull())
{
	QString tagName = node.toElement().tagName();
	if (tagName.compare("Mac") == 0) //节点标记查找
	{
		infodata._strMac = node.toElement().text();//读取节点文本
	}
	else if (tagName.compare("System") == 0)
	{
		infodata._strSystem = node.toElement().text();
	}
	node = node.nextSibling();//读取下一个兄弟节点
}
Qt中QDomDocument实现XML读写大致就这些内容,剩下一些细节可以查看Qt Assistant。
  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于 Qt 的问题。QDomDocumentQt 中用于读写 XML 文件的类。其主要功能是将 XML 文件解析成 DOM 树表示,从而可以方便地进行修改、查询和输出操作。 在 Qt 中使用 QDomDocument 读写 XML 文件的步骤如下: 1. 创建 QDomDocument 对象,并设置 XML 文件的版本、编码和根节点。 2. 通过 QDomDocument 对象的 createElement() 方法创建节点,并通过 appendChild() 方法将其添加到 DOM 树中。 3. 通过 QDomDocument 对象的 createTextNode() 方法创建文本节点,并通过 appendChild() 方法将其添加到 DOM 树中。 4. 通过 QDomDocument 对象的 toByteArray() 方法将 DOM 树输出到字节数组中,或通过 save() 方法将 DOM 树保存到 XML 文件中。 以下是一个简单的示例代码,演示了如何使用 QDomDocument 读写 XML 文件: ```cpp #include <QFile> #include <QDomDocument> int main() { // 创建 QDomDocument 对象 QDomDocument doc; // 设置 XML 文件的版本和编码 doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"")); // 创建根节点 QDomElement root = doc.createElement("root"); doc.appendChild(root); // 创建子节点 QDomElement child = doc.createElement("child"); root.appendChild(child); // 创建文本节点 QDomText text = doc.createTextNode("Hello, world!"); child.appendChild(text); // 将 DOM 树输出到字节数组中 QByteArray xml = doc.toByteArray(); // 将 DOM 树保存到 XML 文件中 QFile file("test.xml"); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream out(&file); out << doc.toString(); file.close(); } return 0; } ``` 这段代码创建了一个名为 test.xmlXML 文件,其内容为: ```xml <?xml version="1.0" encoding="UTF-8"?> <root> <child>Hello, world!</child> </root> ``` 希望这个示例代码可以帮助你了解如何使用 QDomDocumentQt读写 XML 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值