Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version=“1.0” encoding=“UTF-8”?>
- <Draw>
- <Input>
- <Column title=“A”/>
- <Column title=“B”/>
- <Column title=“C”/>
- <Column title=“D”>
- <item id=“0”>Bayer Leverkusen</item>
- <item id=“1”>Benfica</item>
- <item id=“2”>Villareal</item>
- <item id=“3”>Montpellier</item>
- </Column>
- </Input>
- </Draw>
- 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