Самое простое - взглянуть на Пример закладки .Он использует QXmlStreamReader
Из документа:
QXmlStreamReader xml;
...
while (!xml.atEnd()) {
xml.readNext();
... // do processing
}
if (xml.hasError()) {
... // do error handling
}
Из примера:
bool XbelReader::read(QIODevice *device)
{
xml.setDevice(device);
if (xml.readNextStartElement()) {
if (xml.name() == "xbel" && xml.attributes().value("version") == "1.0")
readXBEL();
else
xml.raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
}
return !xml.error();
}
void XbelReader::readXBEL()
{
Q_ASSERT(xml.isStartElement() && xml.name() == "xbel");
while (xml.readNextStartElement()) {
if (xml.name() == "folder")
readFolder(0);
else if (xml.name() == "bookmark")
readBookmark(0);
else if (xml.name() == "separator")
readSeparator(0);
else
xml.skipCurrentElement();
}
}
Вы можете использовать DOM, SAXили XmlStream.Взгляните Здесь приведено несколько примеров .
Таким образом, вы читаете xml и затем создаете / заполняете ваши объекты / время выполнения в зависимости от того, какой XML-файлпри условии.