使用Qt QXmlStreamReader 解析xml: <?xml version="1.0" encoding="utf-8"?> <Config> <Ip>127.0.0.1</Ip> <Port>8888</Port> <DataList id="1"> <csvPath>D:/Confile</csvPath> <csvFile>computech20230707.csv</csvFile> </DataList> <DataList id="2"> <csvPath>D:/Confile</csvPath> <csvFile>computech20230708.csv</csvFile> </DataList> </Config>
时间: 2023-08-17 19:50:03 浏览: 194
qt读取xml文件
3星 · 编辑精心推荐
以下是使用Qt的`QXmlStreamReader`解析XML的示例代码:
```cpp
#include <QXmlStreamReader>
#include <QDebug>
void parseXML(const QString& xmlData) {
QXmlStreamReader xmlReader(xmlData);
while (!xmlReader.atEnd()) {
xmlReader.readNext();
if (xmlReader.isStartElement()) {
QString elementName = xmlReader.name().toString();
if (elementName == "Ip") {
QString ip = xmlReader.readElementText();
qDebug() << "IP: " << ip;
} else if (elementName == "Port") {
QString port = xmlReader.readElementText();
qDebug() << "Port: " << port;
} else if (elementName == "DataList") {
QString id = xmlReader.attributes().value("id").toString();
qDebug() << "DataList ID: " << id;
} else if (elementName == "csvPath") {
QString csvPath = xmlReader.readElementText();
qDebug() << "CSV Path: " << csvPath;
} else if (elementName == "csvFile") {
QString csvFile = xmlReader.readElementText();
qDebug() << "CSV File: " << csvFile;
}
}
}
if (xmlReader.hasError()) {
qDebug() << "XML parsing error: " << xmlReader.errorString();
}
}
int main() {
QString xmlData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<Config>"
" <Ip>127.0.0.1</Ip>"
" <Port>8888</Port>"
" <DataList id=\"1\">"
" <csvPath>D:/Confile</csvPath>"
" <csvFile>computech20230707.csv</csvFile>"
" </DataList>"
" <DataList id=\"2\">"
" <csvPath>D:/Confile</csvPath>"
" <csvFile>computech20230708.csv</csvFile>"
" </DataList>"
"</Config>";
parseXML(xmlData);
return 0;
}
```
在上述示例中,我们定义了一个`parseXML`函数,该函数接收XML数据作为参数,并使用`QXmlStreamReader`进行解析。
在解析过程中,我们使用`readNext`函数逐个读取XML节点。通过使用`isStartElement`函数判断当前节点是否为开始元素,并使用`name`函数获取元素名称。
根据元素名称,我们可以执行适当的操作。例如,当元素名称为"Ip"时,我们使用`readElementText`函数读取元素的文本内容,并将其打印输出。
类似地,我们可以处理其他元素如"Port"、"DataList"、"csvPath"和"csvFile"。
在示例中,我们将XML数据作为字符串传递给`parseXML`函数进行解析。你可以根据实际需求从文件或其他来源读取XML数据,并传递给解析函数进行处理。
请注意,这只是一个简单的示例,你可以根据实际需求进行更复杂的处理和错误检查。
阅读全文