#include <vector> #include <iostream> #include <QtCore/QString> #include <QtXml/QXmlStreamWriter> int main() { std::vector<QString> apds; apds.push_back(QString::fromUtf8("1234567890")); apds.push_back(QString::fromUtf8("4567890123")); apds.push_back(QString::fromUtf8("7890123456")); int batch = 1; QString buffer; QXmlStreamWriter xml ( &buffer ); xml.setAutoFormatting ( true ); xml.writeStartDocument ( QString::fromUtf8 ( "1.0" ) ); xml.writeStartElement ( QString::fromUtf8 ( "productiondb" ) ); xml.writeTextElement ( QString::fromUtf8 ( "batch_type" ), QString::fromUtf8 ( "after irradiation" ) ); xml.writeStartElement ( QString::fromUtf8 ( "elements" ) ); int j = 1; for ( auto i = apds.begin(); i != apds.end(); i++, j++ ) { xml.writeStartElement ( QString::fromUtf8 ( "apd" ) ); xml.writeTextElement ( QString::fromUtf8 ( "serial" ), *i ); xml.writeTextElement ( QString::fromUtf8 ( "batch_number" ), QString::number ( batch, 10 ) ); xml.writeTextElement ( QString::fromUtf8 ( "position" ), QString::number( j, 10 ) ); xml.writeEndElement(); } xml.writeEndDocument(); // This closes all open tags automatically. std::cerr << buffer.toStdString() << std::endl; }