2
我想读取Qt中的一个xml文件,我使用其他方法成功生成了该文件。这里是我的xml文件:Qt读取XML文件
<?xml version="1.0" encoding="UTF-8"?>
<Project>
<EditorTheme>NULL</EditorTheme>
<Modules>
<Module>
<Name>Module_Renderer</Name>
<Position>471,164</Position>
<Size>200,100</Size>
<Locked>true</Locked>
<Visible>true</Visible>
</Module>
<Module>
<Name>Module_Console</Name>
<Position>200,229</Position>
<Size>256,192</Size>
<Locked>true</Locked>
<Visible>false</Visible>
</Module>
<Module>
<Name>Module_ResourceToolkit</Name>
<Position>1049,328</Position>
<Size>200,100</Size>
<Locked>true</Locked>
<Visible>true</Visible>
</Module>
<Module>
<Name>Module_CellEditor</Name>
<Position>542,564</Position>
<Size>200,100</Size>
<Locked>true</Locked>
<Visible>false</Visible>
</Module>
</Modules>
</Project>
这里是一些代码,我使用的解析这个文件:
Project ProjectLoader::loadLastProject(ConsoleModule* console) {
Project project;
// load xml
QFile file("C:/Users/Krynn/Desktop/LastProject.xml");
if(!file.open(QFile::ReadOnly | QFile::Text)) {
// print error cannot open
}
QXmlStreamReader reader;
console->outputDisplay->append("Test");
reader.setDevice(&file);
reader.readNext();
while(!reader.atEnd() && !reader.hasError()) {
reader.readNext();
if(reader.isStartElement()) {
QString name = reader.name().toString();
if(reader.name() == "Project") {
reader.readNextStartElement();
if(reader.name().toString() == "EditorTheme") {
// Append Project theme
console->outputDisplay->append("Theme Detected: " + reader.name().toString() + " " + reader.readElementText());
}
reader.readNextStartElement();
if(reader.name().toString() == "Modules") {
// how do I proceed??
console->outputDisplay->append(QString("") + " " + reader.name().toString() + " " + reader.readElementText());
}
}
}
}
if(reader.hasError()) {
console->outputDisplay->append("XML error: " + reader.errorString());
} else if(reader.atEnd()) {
console->outputDisplay->append("End of XML File Reached");
}
file.close();
return project;
}
,这里是什么代码给了我一些视觉输出:
真的,我只是不知道如何去加载XML文件中的所有模块数据。我之前使用纯文本文件来存储所有这些东西,但现在我想升级。任何帮助将不胜感激。