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