Qt Xml文件读写例子
前言
今天又开始做XML文件读写相关的功能。再次温习一下,顺便记录一下。
正文如下
XML读取的关键在
loopXmlNode方法。写入其实将XML转化成文本后进行文件写入。
int XMLOptUtils::read(const QString &filePath)
{
// 0 读取成功
// -1 文件打开失败
// -2 文件打开成功,数据获取失败
QDomDocument doc;
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly)) return -1;
if(!doc.setContent(&file)) {file.close(); return -2;}
file.close();
QDomElement rootElem = doc.documentElement();
loopXmlNode(rootElem);
return 0;
}
int XMLOptUtils::write(const QString &filePath)
{
QDomDocument doc;
QFile file(filePath);
if(!file.open(QIODevice::ReadOnly)) return -1;
if(!doc.setContent(&file)) {file.close(); return -2;}
file.close();
QDomElement rootElem = doc.documentElement();
loopXmlNode(rootElem);
QString xml = doc.toString();
qDebug() << __FUNCTION__ << __LINE__ << " : " << xml;
QFile file1("E:/1.xml");
if(!file1.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) return -1;
file1.write(xml.toUtf8().data());
file1.close();
return 0;
}
void XMLOptUtils::loopXmlNode(QDomElement &nodeElem)
{
QDomNode firstNode = nodeElem.firstChild();
QDomElement firstElem;
while (!firstNode.isNull())
{
firstElem = firstNode.toElement();
if(!firstElem.isNull())
{
QDomText text = firstElem.firstChild().toText();
text.setData("111111"); // 此处是写入
// 此处是读取节点
qDebug() << __FUNCTION__ << __LINE__ << " : " << firstElem.nodeName() << firstElem.text()
;
loopXmlNode(firstElem);
}
firstNode = firstNode.nextSibling();
}
}
写入部分截图
总结
上面的文件读写方式还是有性能问题。小文件还OK。
版权声明:
作者:小何
链接:https://ligo100.cn/houduanjishu/qt/232.html
来源:小何博客
文章版权归作者所有,未经允许请勿转载。

共有 0 条评论