其他分享
首页 > 其他分享> > Qt 实现读写xml

Qt 实现读写xml

作者:互联网

目录

定义

用途

写入效果

核心代码


定义


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