QT简单入门实例11【QT写简单XML文件】

实现效果:在工程目录下生成一个xml文件

在这里插入图片描述
XML文件内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--Scheduling FrameWork V1.0, Wrote By Sun_tian-->
<Family City="HZ">
    <personItem>
        <person Name="baba" height="165" weight="65" job="teacher">
            </>
        </person>
        <person Name="mama" height="162" weight="60" job="tailor">
            <Empty/>
        </person>
        <person Name="wo" height="183" weight="70" job="Postgraduate">
            <Empty/>
        </person>
    </personItem>
</Family>

QT源码:

#include <QFile>
#include <QXmlStreamWriter>
void Map::writeXML()
{
    QString strFile("test.xml");
    QFile file(strFile);
    if (!file.open(QFile::WriteOnly | QFile::Text)) { // 打开文件
        qDebug() <<strFile<<" Open Fail! "<<file.errorString();
        return;
    }
    QXmlStreamWriter writer;
    writer.setDevice(&file);
    writer.setAutoFormatting(true); // 自动格式化
    writer.writeStartDocument("1.0", true);  // 开始文档(XML 声明)
    writer.writeComment("Scheduling FrameWork V1.0, Wrote By Sun_tian");  // 注释
    writer.writeStartElement("Family");  // 开始根元素 <Family>
    writer.writeAttribute("City", "HZ");  // 属性

    writer.writeStartElement("personItem");  // 开始子元素 <pointItem>
    writer.writeStartElement("person");
    writer.writeAttribute("Name","baba");  // 属性
    writer.writeAttribute("height","165");  // 属性
    writer.writeAttribute("weight","65");  // 属性
    writer.writeAttribute("job","teacher");  // 属性
    writer.writeEmptyElement("");  // 空元素
    writer.writeEndElement();  // 结束子元素 </person>

    writer.writeStartElement("person");
    writer.writeAttribute("Name","mama");  // 属性
    writer.writeAttribute("height","162");  // 属性
    writer.writeAttribute("weight","60");  // 属性
    writer.writeAttribute("job","tailor");  // 属性
    writer.writeEmptyElement("");  // 空元素
    writer.writeEndElement();  // 结束子元素 </person>

    writer.writeStartElement("person");
    writer.writeAttribute("Name","wo");  // 属性
    writer.writeAttribute("height","183");  // 属性
    writer.writeAttribute("weight","70");  // 属性
    writer.writeAttribute("job","Postgraduate");  // 属性
    writer.writeEmptyElement("");  // 空元素
    writer.writeEndElement();  // 结束子元素 </person>

    writer.writeEndElement();  // 结束子元素 </personItem>
    writer.writeEndElement();  // 结束根元素 </Family>
    writer.writeEndDocument();  // 结束文档
    file.close();  // 关闭文件
}
下面是一个完整的示例,演示了如何使用struct和QList在QtXML文件: ```cpp #include <QtXml> #include <QDebug> struct Student { QString name; int age; QString major; }; int main() { QList<Student> studentList; Student student1; student1.name = "Alice"; student1.age = 20; student1.major = "Computer Science"; studentList.append(student1); Student student2; student2.name = "Bob"; student2.age = 22; student2.major = "Mathematics"; studentList.append(student2); QDomDocument doc; // 创建根节点 QDomElement root = doc.createElement("Students"); doc.appendChild(root); // 遍历学生列表,将每个学生信息添加到XML中 foreach(const Student& student, studentList) { // 创建学生节点 QDomElement studentNode = doc.createElement("Student"); // 创建姓名节点,并设置文本内容 QDomElement nameNode = doc.createElement("Name"); nameNode.appendChild(doc.createTextNode(student.name)); studentNode.appendChild(nameNode); // 创建年龄节点,并设置文本内容 QDomElement ageNode = doc.createElement("Age"); ageNode.appendChild(doc.createTextNode(QString::number(student.age))); studentNode.appendChild(ageNode); // 创建专业节点,并设置文本内容 QDomElement majorNode = doc.createElement("Major"); majorNode.appendChild(doc.createTextNode(student.major)); studentNode.appendChild(majorNode); // 将学生节点添加到根节点下 root.appendChild(studentNode); } // 将XML文档保存到文件 QFile file("students.xml"); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream stream(&file); stream << doc.toString(); file.close(); qDebug() << "XML file saved successfully."; } else { qDebug() << "Failed to save XML file."; } return 0; } ``` 在上述示例中,我们首先定义了一个结构体`Student`,表示学生的信息。然后创建了一个`QList<Student>`来保存多个学生对象。 接下来,使用`QDomDocument`创建了一个XML文档,并通过遍历学生列表,将每个学生的信息添加到XML中。最后,将XML文档保存到文件中。 请注意,为了运行此示例,需要在.pro文件中添加`QT += xml`以启用QtXML模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值