Qt中读写xml文件
来源:互联网 发布:淘宝开店需要哪些软件 编辑:程序博客网 时间:2024/06/06 13:20
1 概述
Qt中解析XML文件有多种方法,参考资料[1]使用QXmlStreamReader类来读取并解析xml文件,而参考资料[2]则使用QDomDocument类来解析xml文件。
2 QDomDocument
参考资料[2][3][4]都给出了QDomDocument解析xml文件的方法,下面是一个用于测试的xml文件:
<?xml version="1.0" encoding="UTF-8"?><datainformations> <dataspacing> <X>0.31341081081</X> <Y>0.31341081081</Y> <Z>0.08581081081</Z> </dataspacing> <dataorigin> <X>0.00000000000</X> <Y>0.00000000000</Y> <Z>0.00000000000</Z> </dataorigin></datainformations>下面编写一个函数,用于解析上面的内容:
void parseXML(const QString &fname){ if(fname.isEmpty()) return; QFile file(fname); if(!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::information(nullptr, QString("title"), QString("open error!")); return; } QDomDocument domDocument; QString error; int row = 0, column = 0; if(!domDocument.setContent(&file, false, &error, &row, &column)) { QMessageBox::information(nullptr, QString("Error"), QString("parse file failed at line row and column") + QString::number(row, 10) + QString(",") + QString::number(column, 10)); file.close(); return; } if(domDocument.isNull()) { QMessageBox::information(nullptr, QString("title"), QString("document is null!")); file.close(); return; } const QDomElement domElement = domDocument.documentElement(); const QString domElementTagName = domElement.tagName(); if (domElementTagName != DOMELEMENT_TAGNAME) { QMessageBox::information(nullptr, QString("title"), QString("Root Name is wrong!")); file.close(); return; } QVector3D dataspacing; QVector3D dataorigin; const QDomNodeList spacingOriginList = domElement.childNodes(); for(int i = 0; i < spacingOriginList.count(); ++i) { const QDomNode spacingNode = spacingOriginList.item(i); const QDomElement spacingElement = spacingNode.toElement(); const QString spacingTagName = spacingElement.tagName(); QVector3D *data = nullptr; if (spacingTagName == "dataspacing") { data = &dataspacing; } else if (spacingTagName == "dataorigin"){ data = &dataorigin; } if (!data) continue; const QDomNodeList xyzList = spacingElement.childNodes(); for(int j = 0; j < xyzList.count(); ++j) { const QDomNode xNode = xyzList.item(j); const QDomElement xElement = xNode.toElement(); const QString xTagName = xElement.tagName(); const QString xTagValue = xElement.text(); if (xTagName == "X") { data->setX(xTagValue.toDouble()); } else if (xTagName == "Y") { data->setY(xTagValue.toDouble()); } else if (xTagName == "Z") { data->setZ(xTagValue.toDouble()); } } } file.close(); qDebug() << "spacing:" << dataspacing; qDebug() << "origin:" << dataorigin;}
参考资料
[1]Qt XML读取写入操作
[2]Qt解析XML文件(QDomDocument)
[3]用 Qt 中的 QDomDocument类 处理 XML 文件(上)
[4]用 Qt 中的 QDomDocument类 处理 XML 文件(下)
0 0
- Qt中读写xml文件
- Qt 读写XML文件
- QT 读写Xml文件
- Qt读写XML文件
- qt读写xml文件
- Qt 读写xml文件
- QT XML文件的读写
- Qt读写xml文件实例
- QT QDomDocument 读写XML文件
- QT读写xml文件示例
- Qt中xml的读写
- QT中XML的读写
- QT中读写文件操作
- Qt DomDoucment方式读写 xml文件
- Qt使用流方式 读写xml文件
- QT DOM的方式读写Xml文件
- Qt:QXMLStreamReader、QXMLStreamWriter,读写XML文件实例
- Qt:用Dom方式读写xml文件
- SSH公钥生成以及各主机间的无密码登录
- ADO.NET
- 购物商城shopping连载(10)
- 云主机主机名修改
- Signal ()函数详细介绍 Linux函数
- Qt中读写xml文件
- uva11478 Halum【二分+差分约束】
- genymotion登入老报unknown generic error
- 装修过程中的经典工序流程图(三)
- cocos2d-JS (二)Cocos Creater
- HDU1016——Prime Ring Problem(dfs,输入格式)
- ZOJ 2723 Semi-Prime
- (OK) pthread—epoll-loops-on-disconnection-of-a-client—server
- java虚拟机 jvm 出入java栈 栈空间内存分配