标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。