QXmlSerializerPrivate::QXmlSerializerPrivate(const QXmlQuery &query, QIODevice *outputDevice) : isPreviousAtomic(false), state(QXmlSerializer::BeforeDocumentElement), np(query.namePool().d), device(outputDevice), codec(QTextCodec::codecForMib(106)), /* UTF-8 */ query(query) { hasClosedElement.reserve(EstimatedTreeDepth); namespaces.reserve(EstimatedTreeDepth); nameCache.reserve(EstimatedNameCount); hasClosedElement.push(qMakePair(QXmlName(), true)); /* We push the empty namespace such that first of all namespaceBinding() won't assert on an empty QStack, and such that the empty namespace is in-scope and that the code doesn't attempt to declare it. We push the XML namespace. Although we won't receive declarations for it, we may output attributes by that name. */ QVector<QXmlName> defNss; defNss.resize(2); defNss[0] = QXmlName(StandardNamespaces::empty, StandardLocalNames::empty, StandardPrefixes::empty); defNss[1] = QXmlName(StandardNamespaces::xml, StandardLocalNames::empty, StandardPrefixes::xml); namespaces.push(defNss); /* If we don't set this flag, QTextCodec will generate a BOM. */ converterState.flags = QTextCodec::IgnoreHeader; }
std::vector<SimXmlElement> SimXmlDoc::findElementsWithChildValue(const std::string& elementName, const std::string& childName, const std::string& childValue) const { std::vector<SimXmlElement> result; if (isNull()){ return result; } QString queryString = simQuery("/SimModel/" + elementName + "[" + childName + "='" + childValue + "']"); QXmlQuery query; QDomNodeModel model(query.namePool(), *(impl())); query.setFocus(QXmlItem(model.fromDomNode(impl()->documentElement()))); query.setQuery(queryString, QUrl(QString::fromStdString(this->path()))); if (query.isValid()) { QXmlResultItems items; query.evaluateTo(&items); QXmlItem item(items.next()); while (!item.isNull()) { QDomElement elem = model.toDomNode(item.toNodeModelIndex()).toElement(); QSharedPointer<QDomElement> impl(new QDomElement(elem)); result.push_back(SimXmlElement(impl, *this)); // get next item item = items.next(); } } return result; }
** met: http://www.gnu.org/copyleft/gpl.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at [email protected]. ** $QT_END_LICENSE$ ** ****************************************************************************/ //! [0] myInstance = QXmlNodeModelIndex(); //! [0] //! [1] QFile queryFile(argv[1]); QFile chemistryData(argv[2]); QString moleculeName = argv[3]; QXmlQuery query; query.setQuery(&queryFile, QUrl::fromLocalFile(queryFile.fileName())); ChemistryNodeModel myNodeModel(query.namePool(), chemistryData); QXmlNodeModelIndex startNode = myNodeModel.nodeFor(moleculeName); query.bindVariable("queryRoot", startNode); QFile out; out.open(stdout, QIODevice::WriteOnly); QXmlSerializer serializer(query, &out); query.evaluateTo(&serializer); //! [1]