Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- QXmlStreamReader xmlIterator(xmlDocument);
- QVector<QString> output;
- for(; !xmlIterator.atEnd(); xmlIterator.readNext()) {
- if(isStartElementOfColumnD(xmlIterator)) {
- while(xmlIterator.readNextStartElement()) {
- if(isItemElement(xmlIterator))
- output.append(xmlIterator.readElementText());
- else
- xmlIterator.skipCurrentElement();
- }
- }
- }
- if(xmlIterator.hasError())
- qCritical() << "Error has occurred:" << xmlIterator.errorString();
- else
- qDebug() << output;
- inline bool isStartElementOfColumnD(const QXmlStreamReader& xmlIterator) {
- return xmlIterator.isStartElement() && xmlIterator.name() == "Column" &&
- xmlIterator.attributes().value("title") == "D";
- }
- inline bool isItemElement(const QXmlStreamReader& xmlIterator) {
- return xmlIterator.name() == "item" &&
- xmlIterator.attributes().hasAttribute("id");
- }
- QVector<QString> store;
- [..]
- if (reader.readNextStartElement() && reader.name() == "Draw") {
- while (reader.readNextStartElement() && reader.name() == "Input") {
- while (reader.readNextStartElement()) {
- QXmlStreamAttributes attr = reader.attributes();
- if (reader.name() == "Column" && attr.value("title").toString() == "D") {
- while(!(reader.isEndElement() && reader.name() == "Column")) {
- if (reader.isStartElement() && reader.name() == "item") {
- QString text = reader.readElementText();
- store.append(text);
- }
- reader.readNext();
- if (reader.hasError()) {
- // Handle error.
- QString msg = reader.errorString();
- break;
- }
- }
- } else {
- reader.readNext();
- }
- }
- }
- } else {
- reader.raiseError("Expected <Draw> element");
- }
- [..]
Add Comment
Please, Sign In to add comment