ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt 实现读写xml

2021-04-12 14:34:12  阅读:217  来源: 互联网

标签:xml Info Qt 读写 xmlWriter xmlReader file type name


目录

定义

用途

写入效果

核心代码


定义


XML(Extensible Markup Language)即可扩展标记语言。
标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。

用途


XML设计用来传送及携带数据信息,不用来表现或展示数据,HTML则用来表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。
(摘自维基百科)

熟悉对xml的操作,在项目开发中非常重要。
qt中提供了几种类可以对xml进行处理。本次介绍的是QXmlStreamWriter和QXmlStreamReader。
一种通过流来处理xml的方式。

写入效果

核心代码

引入

#include <QXmlStreamWriter>
#include <QXmlStreamReader>

​//写
void XmlHandle::xmlWrite(const QStringList &elements)
{
	QFile file(_filePath);
	file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
	_xmlWriter.setDevice(&file);
	_xmlWriter.setAutoFormatting(true);
	_xmlWriter.writeStartDocument();

	_xmlWriter.writeStartElement("root");	//root
	//写数据
	for (auto element: elements)
	{
		QStringList listParam = element.split(",");
		if (listParam.size() == XML_Node_Num)
		{
			QString name = listParam[0];
			QString type = listParam[1];

			_xmlWriter.writeStartElement("Info");	//Info	

			_xmlWriter.writeAttribute("Name", name);
			_xmlWriter.writeAttribute("Type", type);

			_xmlWriter.writeEndElement();	//Info
		}
	}
	_xmlWriter.writeEndElement();	//root
	_xmlWriter.writeEndDocument();
	file.close();
}

​
//读
QVector<Info> XmlHandle::xmlRead()
{
	QVector<Info> vecInfo;

	QFile file(_filePath);
	file.open(QIODevice::ReadOnly | QIODevice::Text);
	if (file.exists())
	{
		_xmlReader.setDevice(&file);
		while (!_xmlReader.atEnd())
		{
			QXmlStreamReader::TokenType type = _xmlReader.readNext();
			if(type==QXmlStreamReader::StartDocument)
				continue;
			if (type == QXmlStreamReader::StartElement)
			{
				QString name = _xmlReader.name().toLatin1();
				if (name == "root")
					continue;
				else if (name == "Info")
				{
					Info info;

					QString name = _xmlReader.attributes().value("Name").toLatin1();
					int type = _xmlReader.attributes().value("Type").toInt();

					info.name = name;
					info.type = type;
		
					vecInfo.append(info);
				}
			}
		}
	}
	file.close();
	return vecInfo;
}

 

标签:xml,Info,Qt,读写,xmlWriter,xmlReader,file,type,name
来源: https://blog.csdn.net/c_shell_python/article/details/115620356

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有