void XbelWriter::writeItem(const BookmarkNode *parent) { switch (parent->type()) { case BookmarkNode::Folder: writeStartElement(QLatin1String("folder")); writeAttribute(QLatin1String("folded"), parent->expanded ? QLatin1String("no") : QLatin1String("yes")); writeTextElement(QLatin1String("title"), parent->title); for (int i = 0; i < parent->children().count(); ++i) writeItem(parent->children().at(i)); writeEndElement(); break; case BookmarkNode::Bookmark: writeStartElement(QLatin1String("bookmark")); if (!parent->url.isEmpty()) writeAttribute(QLatin1String("href"), parent->url); writeTextElement(QLatin1String("title"), parent->title); if (!parent->desc.isEmpty()) writeAttribute(QLatin1String("desc"), parent->desc); writeEndElement(); break; case BookmarkNode::Separator: writeEmptyElement(QLatin1String("separator")); break; default: break; } }
//! [2] void XbelWriter::writeItem(QTreeWidgetItem *item) { QString tagName = item->data(0, Qt::UserRole).toString(); if (tagName == "folder") { bool folded = !treeWidget->isItemExpanded(item); writeStartElement(tagName); writeAttribute("folded", folded ? "yes" : "no"); writeTextElement("title", item->text(0)); for (int i = 0; i < item->childCount(); ++i) writeItem(item->child(i)); writeEndElement(); } else if (tagName == "bookmark") { writeStartElement(tagName); if (!item->text(1).isEmpty()) writeAttribute("href", item->text(1)); writeTextElement("title", item->text(0)); writeEndElement(); } else if (tagName == "separator") { writeEmptyElement(tagName); } }
//! [1] def writeFile(self, device): self.setDevice(device) self.writeStartDocument() self.writeDTD("<!DOCTYPE xbel>") self.writeStartElement("xbel") self.writeAttribute("version", "1.0") for i in range(0, self.treeWidget.topLevelItemCount()): self.writeItem(self.treeWidget.topLevelItem(i)) self.writeEndDocument() return True; //! [1] //! [2] void XbelWriter::writeItem(QTreeWidgetItem *item) { QString tagName = item->data(0, Qt::UserRole).toString(); if (tagName == "folder") { bool folded = !treeWidget->isItemExpanded(item); writeStartElement(tagName); writeAttribute("folded", folded ? "yes" : "no"); writeTextElement("title", item->text(0)); for (int i = 0; i < item->childCount(); ++i) writeItem(item->child(i)); writeEndElement(); } else if (tagName == "bookmark") { writeStartElement(tagName); if (!item->text(1).isEmpty()) writeAttribute("href", item->text(1)); writeTextElement("title", item->text(0)); writeEndElement(); } else if (tagName == "separator") { writeEmptyElement(tagName); } }