QT实现保存学生信息到XML文件中
时间: 2023-11-27 22:53:01 浏览: 34
在Qt中,可以使用QXmlStreamWriter类来将学生信息保存到XML文件中。以下是一个简单的示例:
```cpp
#include <QtXml>
#include <QFile>
#include <QDebug>
struct Student {
QString name;
int age;
QString gender;
};
void saveToXml(const QList<Student>& students, const QString& fileName) {
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Failed to open file for writing:" << fileName;
return;
}
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
writer.writeStartDocument();
writer.writeStartElement("students");
for (const auto& student : students) {
writer.writeStartElement("student");
writer.writeStartElement("name");
writer.writeCharacters(student.name);
writer.writeEndElement();
writer.writeStartElement("age");
writer.writeCharacters(QString::number(student.age));
writer.writeEndElement();
writer.writeStartElement("gender");
writer.writeCharacters(student.gender);
writer.writeEndElement();
writer.writeEndElement(); // end of student
}
writer.writeEndElement(); // end of students
writer.writeEndDocument();
file.close();
}
int main() {
QList<Student> students;
students.append({"Alice", 18, "female"});
students.append({"Bob", 20, "male"});
students.append({"Charlie", 19, "male"});
saveToXml(students, "students.xml");
return 0;
}
```
在上面的示例中,我们定义了一个Student结构体,表示学生信息。然后我们实现了一个saveToXml函数,它接受一个学生信息的列表和一个文件名作为参数。在函数中,我们首先打开文件并创建一个QXmlStreamWriter对象。接着,我们使用writer.writeStartDocument()方法写入XML文件的声明。然后,我们使用writer.writeStartElement("students")写入XML文件的根元素。接着,我们遍历学生信息的列表,对于每个学生,我们使用writer.writeStartElement("student")写入学生元素的开始标签,并使用writer.writeEndElement()写入学生元素的结束标签。在学生元素中,我们使用writer.writeStartElement("name")写入姓名元素的开始标签,并使用writer.writeCharacters()写入姓名的值。同样的,我们使用writer.writeStartElement("age")和writer.writeStartElement("gender")写入年龄和性别元素,然后使用writer.writeCharacters()写入它们的值。最后,我们使用writer.writeEndElement()写入学生元素的结束标签。在所有学生元素被写入之后,我们使用writer.writeEndElement()写入根元素的结束标签,并使用writer.writeEndDocument()方法结束XML文件的写入。
最后,在main函数中,我们创建了一个学生信息列表,并调用saveToXml函数将学生信息保存到名为"students.xml"的文件中。