第一步:创建一个xml文件
QFile file_new(“lldf.xml”);
file_new.open(QIODevice::WriteOnly | QIODevice::Text);XmlWriter xml_writer(“lldf.xml”);
xml_writer.writeStartDocument();
QHash content_map;(初始化好数据);
QStringList content;(为content_map中的键);
for (QStringList::iterator i = content.begin(); i != content.end(); i++){xml_writer.writeElement(*i, content_map.value(*i));
}
xml_writer.writeEndDocument();
其中 XmlWriter是自己封装的文件写类:
定义如下:
class XmlWriter
{
public:
XmlWriter(const QString &file);
void writeStartDocument();
void writeElement(const QString &name, const QString &id);
void writeEndDocument();
private:
QXmlStreamWriter xml;
QFile xmlFile;
};
实现:
XmlWriter::XmlWriter(const QString &file)
{
xmlFile.setFileName(file);
xmlFile.setPermissions(QFile::WriteOwner);
if (!xmlFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
Q_ASSERT(false);
LOG(ERROR) << "COMMENT: Can not write to " << qPrintable(file);
return;
}
xml.setDevice(&xmlFile);
xml.setAutoFormatting(true);
}
void XmlWriter::writeStartDocument()
{
xml.writeStartDocument();
xml.writeStartElement("package");
}
void XmlWriter::writeEndDocument()
{
xml.writeEndElement();
xml.writeEndDocument();
xmlFile.close();
}
void XmlWriter::writeElement(const QString &name, const QString &id)
{
xml.writeStartElement("exam");
xml.writeAttribute("name", name);
xml.writeTextElement("id", id);
xml.writeEndElement();
}