l文件
Qt提供了许多类来读写XML文件,其中最常用的是QXmlStreamReader和QXmlStreamWriter。
使用QXmlStreamReader读取XML文件:
#include <QtCore/QCoreApplication>
#include <QtCore/QFile>
#include <QtCore/QDebug>
#include <QtXml/QXmlStreamReader>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("file.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Can't open the file!";
return -1;
}
QXmlStreamReader xml(&file);
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
qDebug() << "Start element:" << xml.name();
// 获取属性值
if (xml.attributes().hasAttribute("id")) {
qDebug() << "id:" << xml.attributes().value("id").toString();
}
} else if (xml.isEndElement()) {
qDebug() << "End element:" << xml.name();
} else if (xml.isCharacters()) {
qDebug() << "Character data:" << xml.text();
}
}
if (xml.hasError()) {
qDebug() << "Error: Failed to parse XML.";
return -1;
}
file.close();
return a.exec();
}
使用QXmlStreamWriter写入XML文件:
#include <QtCore/QCoreApplication>
#include <QtCore/QFile>
#include <QtCore/QDebug>
#include <QtXml/QXmlStreamWriter>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("file.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Can't open the file!";
return -1;
}
QXmlStreamWriter xml(&file);
xml.setAutoFormatting(true);
xml.writeStartDocument();
xml.writeStartElement("root");
xml.writeStartElement("person");
xml.writeAttribute("id", "001");
xml.writeTextElement("name", "Alice");
xml.writeTextElement("age", "20");
xml.writeEndElement(); // person
xml.writeStartElement("person");
xml.writeAttribute("id", "002");
xml.writeTextElement("name", "Bob");
xml.writeTextElement("age", "30");
xml.writeEndElement(); // person
xml.writeEndElement(); // root
file.close();
return a.exec();
}
在写入XML文件时,需要注意以下几点:
- 需要先调用writeStartDocument函数来写入XML文档的声明。
- 调用writeStartElement函数来开始一个元素,再使用writeEndElement函数结束一个元素。
- 使用writeAttribute函数来设置元素的属性。
- 使用writeTextElement函数来设置元素的值。