bool KmlParser::isValidElement(const QString& tagName) const { if (!GeoParser::isValidElement(tagName)) return false; return (namespaceUri() == kml::kmlTag_nameSpace20 || namespaceUri() == kml::kmlTag_nameSpace21 || namespaceUri() == kml::kmlTag_nameSpace22 || namespaceUri() == kml::kmlTag_nameSpaceGx22 || namespaceUri() == kml::kmlTag_nameSpaceOgc22 ); }
KoFilter::ConversionStatus XlsxXmlCommentsReader::readInternal() { readNext(); if (!isStartDocument()) { return KoFilter::WrongFormat; } // comments readNext(); kDebug() << *this << namespaceUri(); if (!expectEl("comments")) { return KoFilter::WrongFormat; } if (!expectNS(MSOOXML::Schemas::spreadsheetml)) { return KoFilter::WrongFormat; } QXmlStreamNamespaceDeclarations namespaces(namespaceDeclarations()); for (int i = 0; i < namespaces.count(); i++) { kDebug() << "NS prefix:" << namespaces[i].prefix() << "uri:" << namespaces[i].namespaceUri(); } //! @todo find out whether the namespace returned by namespaceUri() //! is exactly the same ref as the element of namespaceDeclarations() if (!namespaces.contains(QXmlStreamNamespaceDeclaration(QString(), MSOOXML::Schemas::spreadsheetml))) { raiseError(i18n("Namespace \"%1\" not found", MSOOXML::Schemas::spreadsheetml)); return KoFilter::WrongFormat; } //! @todo expect other namespaces too... TRY_READ(comments) kDebug() << "===========finished============"; return KoFilter::OK; }
KoFilter::ConversionStatus VmlDrawingReader::read(MSOOXML::MsooXmlReaderContext* context) { m_context = static_cast<VmlDrawingReaderContext*>(context); readNext(); if (!isStartDocument()) { return KoFilter::WrongFormat; } readNext(); kDebug() << *this << namespaceUri(); if (!expectEl(QList<QByteArray>() << "xml")) { return KoFilter::WrongFormat; } const QString qn(qualifiedName().toString()); RETURN_IF_ERROR(read_xml()) if (!expectElEnd(qn)) { return KoFilter::WrongFormat; } kDebug() << "===========finished============"; return KoFilter::OK; }
void RssParser::dataAvailable(int id) { // Checking if we have already set the IO device for the reader if (m_reader.device() != reply(id)) { m_reader.setDevice(reply(id)); } // Reads data that has just arrived and parses it while (!m_reader.atEnd()) { switch (m_status) { case States::NotStarted: startReadingDocument(); break; case States::Started: readTag("rss", States::RssRead); break; case States::RssRead: // Here we store prefixes for namespaces we know. { const QXmlStreamNamespaceDeclarations namespaces = m_reader.namespaceDeclarations(); for (auto it = namespaces.constBegin(); it != namespaces.constEnd(); ++it) { if (it->namespaceUri() == "http://purl.org/dc/elements/1.1/") { m_dcNamespacePrefix = it->prefix().toString(); } } } readTag("channel", States::ReadingChannel); break; case States::ReadingChannel: readChannelInfo(); break; case States::ReadingNews: readItemInfo(); break; case States::FinishedReadingChannel: readClosingRssTag(); break; case States::FinishedReadingRss: readEndDocument(); break; case States::DocumentFinished: break; } } if ((m_reader.hasError()) && (m_reader.error() != QXmlStreamReader::PrematureEndOfDocumentError)) { // An error occurred, ending here m_channelUpdater->allNewsReceived(false, QObject::tr("Error parsing rss document: ") + m_reader.errorString()); } // If we have finished reading the document, resetting internal state if (m_status == States::DocumentFinished) { m_status = States::NotStarted; m_openedTags.clear(); m_channelCategories.clear(); } }
KoFilter::ConversionStatus XlsxXmlDocumentReader::readInternal() { kDebug() << "============================="; readNext(); if (!isStartDocument()) { return KoFilter::WrongFormat; } // workbook readNext(); kDebug() << *this << namespaceUri(); if (!expectEl("workbook")) { return KoFilter::WrongFormat; } if (!expectNS(MSOOXML::Schemas::spreadsheetml)) { return KoFilter::WrongFormat; } /* const QXmlStreamAttributes attrs( attributes() ); for (int i=0; i<attrs.count(); i++) { kDebug() << "1 NS prefix:" << attrs[i].name() << "uri:" << attrs[i].namespaceUri(); }*/ QXmlStreamNamespaceDeclarations namespaces(namespaceDeclarations()); for (int i = 0; i < namespaces.count(); i++) { kDebug() << "NS prefix:" << namespaces[i].prefix() << "uri:" << namespaces[i].namespaceUri(); } //! @todo find out whether the namespace returned by namespaceUri() //! is exactly the same ref as the element of namespaceDeclarations() if (!namespaces.contains(QXmlStreamNamespaceDeclaration(QString(), MSOOXML::Schemas::spreadsheetml))) { raiseError(i18n("Namespace \"%1\" not found", MSOOXML::Schemas::spreadsheetml)); return KoFilter::WrongFormat; } //! @todo expect other namespaces too... TRY_READ(workbook) //! @todo hardcoded font face list; look at fonts used by theme mainStyles->insertFontFace(KOdfFontData("Calibri")); mainStyles->insertFontFace(KOdfFontData("Arial")); mainStyles->insertFontFace(KOdfFontData("Tahoma")); kDebug() << "===========finished============"; return KoFilter::OK; }
KoFilter::ConversionStatus DocxXmlFontTableReader::read(MSOOXML::MsooXmlReaderContext* context) { m_context = dynamic_cast<DocxXmlFontTableReaderContext*>(context); kDebug() << "============================="; readNext(); if (!isStartDocument()) { return KoFilter::WrongFormat; } //w:document readNext(); kDebug() << namespaceUri(); if (!expectEl("w:fonts")) { return KoFilter::WrongFormat; } if (!expectNS(MSOOXML::Schemas::wordprocessingml)) { return KoFilter::WrongFormat; } /* const QXmlStreamAttributes attrs( attributes() ); for (int i=0; i<attrs.count(); i++) { kDebug() << "1 NS prefix:" << attrs[i].name() << "uri:" << attrs[i].namespaceUri(); }*/ QXmlStreamNamespaceDeclarations namespaces(namespaceDeclarations()); for (int i = 0; i < namespaces.count(); i++) { kDebug() << "NS prefix:" << namespaces[i].prefix() << "uri:" << namespaces[i].namespaceUri(); } //! @todo find out whether the namespace returned by namespaceUri() //! is exactly the same ref as the element of namespaceDeclarations() if (!namespaces.contains(QXmlStreamNamespaceDeclaration("w", MSOOXML::Schemas::wordprocessingml))) { raiseError(i18n("Namespace \"%1\" not found", MSOOXML::Schemas::wordprocessingml)); return KoFilter::WrongFormat; } //! @todo expect other namespaces too... TRY_READ(fonts) if (!expectElEnd("w:fonts")) { return KoFilter::WrongFormat; } kDebug() << "===========finished============"; return KoFilter::OK; }
KoFilter::ConversionStatus DocxXmlHeaderReader::read(MSOOXML::MsooXmlReaderContext* context) { m_context = static_cast<DocxXmlDocumentReaderContext*>(context); kDebug() << "============================="; readNext(); if (!isStartDocument()) { return KoFilter::WrongFormat; } readNext(); kDebug() << *this << namespaceUri(); if (!expectEl(QList<QByteArray>() << "w:hdr")) { return KoFilter::WrongFormat; } if (!expectNS(MSOOXML::Schemas::wordprocessingml)) { return KoFilter::WrongFormat; } QXmlStreamNamespaceDeclarations namespaces(namespaceDeclarations()); //! @todo find out whether the namespace returned by namespaceUri() //! is exactly the same ref as the element of namespaceDeclarations() if (!namespaces.contains(QXmlStreamNamespaceDeclaration("w", MSOOXML::Schemas::wordprocessingml))) { raiseError(i18n("Namespace \"%1\" not found", MSOOXML::Schemas::wordprocessingml)); return KoFilter::WrongFormat; } const QString qn(qualifiedName().toString()); RETURN_IF_ERROR(read_hdr()) if (!expectElEnd(qn)) { return KoFilter::WrongFormat; } kDebug() << "===========finished============"; return KoFilter::OK; }
void YTFeedReader::readEntry() { Video* video = new Video(); while (!atEnd()) { readNext(); /* qDebug() << name(); QXmlStreamAttribute attribute; foreach (attribute, attributes()) qDebug() << attribute.name() << ":" << attribute.value(); */ if (isEndElement() && name() == QLatin1String("entry")) break; if (isStartElement()) { if (name() == QLatin1String("link") && attributes().value("rel").toString() == QLatin1String("alternate") && attributes().value("type").toString() == QLatin1String("text/html") ) { QString webpage = attributes().value("href").toString(); webpage.remove("&feature=youtube_gdata"); video->setWebpage(webpage); } else if (name() == QLatin1String("author")) { while(readNextStartElement()) if (name() == QLatin1String("name")) { QString author = readElementText(); video->setChannelTitle(author); } else if (name() == QLatin1String("userId")) { QString userId = readElementText(); video->setChannelId(userId); } else skipCurrentElement(); } else if (name() == QLatin1String("published")) { video->setPublished(QDateTime::fromString(readElementText(), Qt::ISODate)); } else if (namespaceUri() == QLatin1String("http://gdata.youtube.com/schemas/2007") && name() == QLatin1String("statistics")) { QString viewCount = attributes().value("viewCount").toString(); video->setViewCount(viewCount.toInt()); } else if (namespaceUri() == QLatin1String("http://search.yahoo.com/mrss/") && name() == QLatin1String("group")) { // read media group while (!atEnd()) { readNext(); if (isEndElement() && name() == QLatin1String("group")) break; if (isStartElement()) { if (name() == QLatin1String("thumbnail")) { // qDebug() << "Thumb: " << attributes().value("url").toString(); QStringRef name = attributes().value("yt:name"); if (name == QLatin1String("mqdefault")) video->setThumbnailUrl( attributes().value("url").toString()); else if (name == QLatin1String("hqdefault")) video->setMediumThumbnailUrl( attributes().value("url").toString()); } else if (name() == QLatin1String("title")) { QString title = readElementText(); // qDebug() << "Title: " << title; video->setTitle(title); } else if (name() == QLatin1String("description")) { QString desc = readElementText(); // qDebug() << "Description: " << desc; video->setDescription(desc); } else if (name() == QLatin1String("duration")) { QString duration = attributes().value("seconds").toString(); // qDebug() << "Duration: " << duration; video->setDuration(duration.toInt()); } else if (name() == QLatin1String("license")) { QString license = readElementText(); // qDebug() << "License: " << license; if (license == QLatin1String("cc")) video->setLicense(Video::LicenseCC); } } } } } } videos.append(video); }
void MaintainingReader<TokenLookupClass, LookupKey>::validateElement(const LookupKey elementName) const { Q_ASSERT(tokenType() == QXmlStreamReader::StartElement); if(m_elementDescriptions.contains(elementName)) { const ElementDescription<TokenLookupClass, LookupKey> &desc = m_elementDescriptions.value(elementName); const int attCount = m_currentAttributes.count(); QSet<typename TokenLookupClass::NodeName> encounteredXSLTAtts; for(int i = 0; i < attCount; ++i) { const QXmlStreamAttribute &attr = m_currentAttributes.at(i); if(attr.namespaceUri().isEmpty()) { const typename TokenLookupClass::NodeName attrName(TokenLookupClass::toToken(attr.name())); encounteredXSLTAtts.insert(attrName); if(!desc.requiredAttributes.contains(attrName) && !desc.optionalAttributes.contains(attrName) && !m_standardAttributes.contains(attrName) && !isAnyAttributeAllowed()) { QString translationString; QList<typename TokenLookupClass::NodeName> all(desc.requiredAttributes.toList() + desc.optionalAttributes.toList()); const int totalCount = all.count(); QStringList allowed; for(int i = 0; i < totalCount; ++i) allowed.append(formatKeyword(toString(all.at(i)))); /* Note, we can't run toString() on attrName, because we're in this branch, * the token lookup doesn't have the string(!).*/ const QString stringedName(attr.name().toString()); if(totalCount == 0) { translationString = QtXmlPatterns::tr("Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.") .arg(formatKeyword(stringedName), formatKeyword(name())); } else if(totalCount == 1) { translationString = QtXmlPatterns::tr("Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.") .arg(formatKeyword(stringedName), formatKeyword(name()), allowed.first()); } else if(totalCount == 1) { /* Note, allowed has already had formatKeyword() applied. */ translationString = QtXmlPatterns::tr("Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.") .arg(formatKeyword(stringedName), formatKeyword(name()), allowed.first(), allowed.last()); } else { /* Note, allowed has already had formatKeyword() applied. */ translationString = QtXmlPatterns::tr("Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.") .arg(formatKeyword(stringedName), formatKeyword(name()), allowed.join(QLatin1String(", "))); } m_context->error(translationString, ReportContext::XTSE0090, currentLocation()); } } else if(attr.namespaceUri() == namespaceUri()) { m_context->error(QtXmlPatterns::tr("XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is.") .arg(formatKeyword(attr.name())), ReportContext::XTSE0090, currentLocation()); } /* Else, attributes in other namespaces are allowed, continue. */ } const QSet<typename TokenLookupClass::NodeName> requiredButMissing(QSet<typename TokenLookupClass::NodeName>(desc.requiredAttributes).subtract(encounteredXSLTAtts)); if(!requiredButMissing.isEmpty()) { error(QtXmlPatterns::tr("The attribute %1 must appear on element %2.") .arg(formatKeyword(toString(*requiredButMissing.constBegin())), formatKeyword(name())), ReportContext::XTSE0010); } } else { error(QtXmlPatterns::tr("The element with local name %1 does not exist in XSL-T.").arg(formatKeyword(name())), ReportContext::XTSE0010); } }
void YouTubeStreamReader::readEntry() { Video* video = new Video(); // qDebug(" *** ENTRY ***"); while (!atEnd()) { readNext(); /* qDebug() << name(); QXmlStreamAttribute attribute; foreach (attribute, attributes()) qDebug() << attribute.name() << ":" << attribute.value(); */ if (isEndElement() && name() == "entry") break; if (isStartElement()) { if (name() == "link" && attributes().value("rel").toString() == "alternate" && attributes().value("type").toString() == "text/html" ) { QString webpage = attributes().value("href").toString(); webpage.remove("&feature=youtube_gdata"); // qDebug() << "Webpage: " << webpage; video->setWebpage(QUrl(webpage)); } else if (name() == "author") { readNext(); if (name() == "name") { QString author = readElementText(); // qDebug() << "Author: " << author; video->setAuthor(author); } } else if (name() == "published") { video->setPublished(QDateTime::fromString(readElementText(), Qt::ISODate)); } else if (namespaceUri() == "http://gdata.youtube.com/schemas/2007" && name() == "statistics") { QString viewCount = attributes().value("viewCount").toString(); // qDebug() << "viewCount: " << viewCount; video->setViewCount(viewCount.toInt()); } else if (namespaceUri() == "http://search.yahoo.com/mrss/" && name() == "group") { // read media group while (!atEnd()) { readNext(); if (isEndElement() && name() == "group") break; if (isStartElement()) { if (name() == "thumbnail") { // qDebug() << "Thumb: " << attributes().value("url").toString(); // video->thumbnailUrls() << QUrl(attributes().value("url").toString()); video->addThumbnailUrl(QUrl(attributes().value("url").toString())); } else if (name() == "title") { QString title = readElementText(); // qDebug() << "Title: " << title; video->setTitle(title); } else if (name() == "description") { QString desc = readElementText(); // qDebug() << "Description: " << desc; video->setDescription(desc); } else if (name() == "duration") { QString duration = attributes().value("seconds").toString(); // qDebug() << "Duration: " << duration; video->setDuration(duration.toInt()); } } } } } } videos.append(video); }
OpenSearchEngine *OpenSearchReader::read() { OpenSearchEngine *engine = new OpenSearchEngine(); while (!isStartElement() && !atEnd()) readNext(); if (name() != QLatin1String("OpenSearchDescription") || namespaceUri() != QLatin1String("http://a9.com/-/spec/opensearch/1.1/")) { raiseError(QObject::tr("The file is not an OpenSearch 1.1 file.")); return engine; } while (!atEnd()) { readNext(); if (!isStartElement()) continue; if (name() == QLatin1String("ShortName")) { engine->setName(readElementText()); } else if (name() == QLatin1String("Description")) { engine->setDescription(readElementText()); } else if (name() == QLatin1String("Url")) { QString type = attributes().value(QLatin1String("type")).toString(); QString url = attributes().value(QLatin1String("template")).toString(); if (type == QLatin1String("application/x-suggestions+json") && !engine->suggestionsUrlTemplate().isEmpty()) continue; if ((type.isEmpty() || type == QLatin1String("text/html") || type == QLatin1String("application/xhtml+xml")) && !engine->searchUrlTemplate().isEmpty()) continue; if (url.isEmpty()) continue; QList<OpenSearchEngine::Parameter> parameters; readNext(); while (!(isEndElement() && name() == QLatin1String("Url"))) { if (!isStartElement() || (name() != QLatin1String("Param") && name() != QLatin1String("Parameter"))) { readNext(); continue; } QString key = attributes().value(QLatin1String("name")).toString(); QString value = attributes().value(QLatin1String("value")).toString(); if (!key.isEmpty() && !value.isEmpty()) parameters.append(OpenSearchEngine::Parameter(key, value)); while (!isEndElement()) readNext(); } if (type == QLatin1String("application/x-suggestions+json")) { engine->setSuggestionsUrlTemplate(url); engine->setSuggestionsParameters(parameters); } else if (type.isEmpty() || type == QLatin1String("text/html") || type == QLatin1String("application/xhtml+xml")) { engine->setSearchUrlTemplate(url); engine->setSearchParameters(parameters); } } else if (name() == QLatin1String("Image")) { engine->setImageUrl(readElementText()); } if (!engine->name().isEmpty() && !engine->description().isEmpty() && !engine->suggestionsUrlTemplate().isEmpty() && !engine->searchUrlTemplate().isEmpty() && !engine->imageUrl().isEmpty()) break; } return engine; }