void XmlReader::unknown() { if (QXmlStreamReader::error()) qDebug("%s ", qPrintable(errorString())); if (!docName.isEmpty()) qDebug("tag in <%s> line %lld col %lld: %s", qPrintable(docName), lineNumber(), columnNumber(), name().toUtf8().data()); else qDebug("tag; line %lld col %lld: %s", lineNumber(), columnNumber(), name().toUtf8().data()); skipCurrentElement(); }
void TSReader::handleError() { if (isComment()) return; if (hasError() && error() == CustomError) // raised by readContents return; const QString loc = QString::fromLatin1("at %3:%1:%2") .arg(lineNumber()).arg(columnNumber()).arg(m_cd.m_sourceFileName); switch (tokenType()) { case NoToken: // Cannot happen default: // likewise case Invalid: raiseError(QString::fromLatin1("Parse error %1: %2").arg(loc, errorString())); break; case StartElement: raiseError(QString::fromLatin1("Unexpected tag <%1> %2").arg(name().toString(), loc)); break; case Characters: { QString tok = text().toString(); if (tok.length() > 30) tok = tok.left(30) + QLatin1String("[...]"); raiseError(QString::fromLatin1("Unexpected characters '%1' %2").arg(tok, loc)); } break; case EntityReference: raiseError(QString::fromLatin1("Unexpected entity '&%1;' %2").arg(name().toString(), loc)); break; case ProcessingInstruction: raiseError(QString::fromLatin1("Unexpected processing instruction %1").arg(loc)); break; } }
bool PdmlReader::read(QIODevice *device, PcapFileFormat *pcap, bool *stop) { setDevice(device); pcap_ = pcap; stop_ = stop; while (!atEnd()) { readNext(); if (isStartElement()) { if (name() == "pdml") readPdml(); else raiseError("Not a pdml file!"); } } if (error() && (errorString() != "USER-CANCEL")) { qDebug("Line %lld", lineNumber()); qDebug("Col %lld", columnNumber()); qDebug("%s", errorString().toAscii().constData()); return false; } return true; }
void XmlReader::unknown() { if (QXmlStreamReader::error()) qDebug("StreamReaderError: %s", qPrintable(errorString())); qDebug("%s: xml read error at line %lld col %lld: %s", qPrintable(docName), lineNumber(), columnNumber(), name().toUtf8().data()); skipCurrentElement(); }
void QConsoleWidget::setPrompt(const QString &v) { auto __insertText=[ this]( const QString & t, const QTextCharFormat & f ) { { auto tc = this->textCursor(); tc.clearSelection(); this ->setTextCursor(tc); } auto tc = this->textCursor(); tc.insertText(t, f); this->setTextCursor(tc); }; //TODO: QConsoleWidget::setPrompt { prompt_ = v.simplified(); _pf<void, MoveToEnd>(this); { auto * document_ = this->document(); auto tc_ = this->textCursor(); QChar current_char_ = document_->characterAt(tc_.position()); //QChar::LineSeparator; ; if ( (tc_.columnNumber()==0) && ( (current_char_ == QChar::ParagraphSeparator) ) ){ /* 如果以换行符开头就不必添加新行 */ promptBeginPos_ = this->textCursor().position(); __insertText(prompt_, thisp->textCharFormat); promptEndPos_ = this->textCursor().position(); _pf<void, UpdatePromptWidget>(this); _pf<void, MoveToEnd>(this); } else { /* 添加新行 */ __insertText("\n", thisp->textCharFormat); __insertText(prompt_, thisp->textCharFormat); promptEndPos_ = this->textCursor().position(); promptBeginPos_ = promptEndPos_ - prompt_.size(); _pf<void, UpdatePromptWidget>(this); _pf<void, MoveToEnd>(this); } } } }
void XMLDocumentParser::doEnd() { #if ENABLE(XSLT) if (m_sawXSLTransform) { document()->setTransformSource(new TransformSource(m_originalSourceForTransform)); document()->setParsing(false); // Make the doc think it's done, so it will apply xsl sheets. document()->styleSelectorChanged(RecalcStyleImmediately); document()->setParsing(true); DocumentParser::stopParsing(); } #endif if (m_stream.error() == QXmlStreamReader::PrematureEndOfDocumentError || (m_wroteText && !m_sawFirstElement && !m_sawXSLTransform && !m_sawError)) handleError(fatal, qPrintable(m_stream.errorString()), lineNumber(), columnNumber()); }
void MemcheckParser::parse() { while (!atEnd()) { switch (readNext()) { case StartDocument: clear(); break; case StartElement: startElement(); break; case EndElement: endElement(); break; case Characters: m_buffer += text().toString(); break; default: break; } } if (hasError()) { switch (error()) { case CustomError: case UnexpectedElementError: case NotWellFormedError: KMessageBox::error(qApp->activeWindow(), i18n("Valgrind XML Parsing: error at line %1, column %2: %3", lineNumber(), columnNumber(), errorString()), i18n("Valgrind Error")); break; case NoError: case PrematureEndOfDocumentError: break; } } }
void XMLDocumentParser::parseDtd() { QStringRef name = m_stream.dtdName(); QStringRef publicId = m_stream.dtdPublicId(); QStringRef systemId = m_stream.dtdSystemId(); //qDebug() << dtd << name << publicId << systemId; if ((publicId == QLatin1String("-//W3C//DTD XHTML 1.0 Transitional//EN")) || (publicId == QLatin1String("-//W3C//DTD XHTML 1.1//EN")) || (publicId == QLatin1String("-//W3C//DTD XHTML 1.0 Strict//EN")) || (publicId == QLatin1String("-//W3C//DTD XHTML 1.0 Frameset//EN")) || (publicId == QLatin1String("-//W3C//DTD XHTML Basic 1.0//EN")) || (publicId == QLatin1String("-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN")) || (publicId == QLatin1String("-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN")) #if !ENABLE(XHTMLMP) || (publicId == QLatin1String("-//WAPFORUM//DTD XHTML Mobile 1.0//EN")) #endif ) setIsXHTMLDocument(true); // controls if we replace entities or not. #if ENABLE(XHTMLMP) else if ((publicId == QLatin1String("-//WAPFORUM//DTD XHTML Mobile 1.1//EN")) || (publicId == QLatin1String("-//WAPFORUM//DTD XHTML Mobile 1.0//EN"))) { if (AtomicString(name) != HTMLNames::htmlTag.localName()) { handleError(fatal, "Invalid DOCTYPE declaration, expected 'html' as root element.", lineNumber(), columnNumber()); return; } if (document()->isXHTMLMPDocument()) // check if the MIME type is correct with this method setIsXHTMLMPDocument(true); else setIsXHTMLDocument(true); } #endif #if ENABLE(WML) else if (document()->isWMLDocument() && publicId != QLatin1String("-//WAPFORUM//DTD WML 1.3//EN") && publicId != QLatin1String("-//WAPFORUM//DTD WML 1.2//EN") && publicId != QLatin1String("-//WAPFORUM//DTD WML 1.1//EN") && publicId != QLatin1String("-//WAPFORUM//DTD WML 1.0//EN")) handleError(fatal, "Invalid DTD Public ID", lineNumber(), columnNumber()); #endif if (!m_parsingFragment) document()->parserAddChild(DocumentType::create(document(), name, publicId, systemId)); }
void XMLDocumentParser::doWrite(const String& parseString) { m_wroteText = true; if (document()->decoder() && document()->decoder()->sawError()) { // If the decoder saw an error, report it as fatal (stops parsing) handleError(fatal, "Encoding error", lineNumber(), columnNumber()); return; } QString data(parseString); if (!data.isEmpty()) { // JavaScript may cause the parser to detach, // keep this alive until this function is done. RefPtr<XMLDocumentParser> protect(this); m_stream.addData(data); parse(); } return; }
void XMLDocumentParser::parseStartElement() { if (!m_sawFirstElement && m_parsingFragment) { // skip dummy element for fragments m_sawFirstElement = true; return; } exitText(); String localName = m_stream.name(); String uri = m_stream.namespaceUri(); String prefix = prefixFromQName(m_stream.qualifiedName().toString()); if (m_parsingFragment && uri.isNull()) { Q_ASSERT(prefix.isNull()); uri = m_defaultNamespaceURI; } QualifiedName qName(prefix, localName, uri); RefPtr<Element> newElement = document()->createElement(qName, true); if (!newElement) { stopParsing(); return; } #if ENABLE(XHTMLMP) if (!m_sawFirstElement && isXHTMLMPDocument()) { // As per 7.1 section of OMA-WAP-XHTMLMP-V1_1-20061020-A.pdf, // we should make sure that the root element MUST be 'html' and // ensure the name of the default namespace on the root elment 'html' // MUST be 'http://www.w3.org/1999/xhtml' if (localName != HTMLNames::htmlTag.localName()) { handleError(fatal, "XHTMLMP document expects 'html' as root element.", lineNumber(), columnNumber()); return; } if (uri.isNull()) { m_defaultNamespaceURI = HTMLNames::xhtmlNamespaceURI; uri = m_defaultNamespaceURI; m_stream.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration(prefix, HTMLNames::xhtmlNamespaceURI)); } } #endif bool isFirstElement = !m_sawFirstElement; m_sawFirstElement = true; ExceptionCode ec = 0; handleElementNamespaces(newElement.get(), m_stream.namespaceDeclarations(), ec, m_scriptingPermission); if (ec) { stopParsing(); return; } handleElementAttributes(newElement.get(), m_stream.attributes(), ec, m_scriptingPermission); if (ec) { stopParsing(); return; } ScriptElement* scriptElement = toScriptElement(newElement.get()); if (scriptElement) m_scriptStartPosition = textPositionOneBased(); m_currentNode->deprecatedParserAddChild(newElement.get()); pushCurrentNode(newElement.get()); if (m_view && !newElement->attached()) newElement->attach(); #if ENABLE(OFFLINE_WEB_APPLICATIONS) if (newElement->hasTagName(HTMLNames::htmlTag)) static_cast<HTMLHtmlElement*>(newElement.get())->insertedByParser(); #endif if (isFirstElement && document()->frame()) document()->frame()->loader()->dispatchDocumentElementAvailable(); }
void XMLDocumentParser::parse() { while (!isStopped() && !m_parserPaused && !m_stream.atEnd()) { m_stream.readNext(); switch (m_stream.tokenType()) { case QXmlStreamReader::StartDocument: { startDocument(); } break; case QXmlStreamReader::EndDocument: { endDocument(); } break; case QXmlStreamReader::StartElement: { #if ENABLE(XHTMLMP) if (document()->isXHTMLMPDocument() && !m_hasDocTypeDeclaration) { handleError(fatal, "DOCTYPE declaration lost.", lineNumber(), columnNumber()); break; } #endif parseStartElement(); } break; case QXmlStreamReader::EndElement: { parseEndElement(); } break; case QXmlStreamReader::Characters: { if (m_stream.isCDATA()) { //cdata parseCdata(); } else { //characters parseCharacters(); } } break; case QXmlStreamReader::Comment: { parseComment(); } break; case QXmlStreamReader::DTD: { //qDebug()<<"------------- DTD"; parseDtd(); #if ENABLE(XHTMLMP) m_hasDocTypeDeclaration = true; #endif } break; case QXmlStreamReader::EntityReference: { //qDebug()<<"---------- ENTITY = "<<m_stream.name().toString() // <<", t = "<<m_stream.text().toString(); if (isXHTMLDocument() #if ENABLE(XHTMLMP) || isXHTMLMPDocument() #endif ) { QString entity = m_stream.name().toString(); UChar c = decodeNamedEntity(entity.toUtf8().constData()); if (!m_currentNode->isTextNode()) enterText(); ExceptionCode ec = 0; String str(&c, 1); // qDebug()<<" ------- adding entity "<<str; static_cast<Text*>(m_currentNode)->appendData(str, ec); } } break; case QXmlStreamReader::ProcessingInstruction: { parseProcessingInstruction(); } break; default: { if (m_stream.error() != QXmlStreamReader::PrematureEndOfDocumentError) { ErrorType type = (m_stream.error() == QXmlStreamReader::NotWellFormedError) ? fatal : warning; handleError(type, qPrintable(m_stream.errorString()), lineNumber(), columnNumber()); } } break; } } }
// This method incorrectly reinterprets zero-base lineNumber method as one-based number. // FIXME: This error is kept for compatibility. We should fix it eventually. TextPosition1 XMLDocumentParser::textPositionOneBased() const { return TextPosition1(WTF::OneBasedNumber::fromOneBasedInt(lineNumber()), WTF::OneBasedNumber::fromOneBasedInt(columnNumber())); }
TextPosition0 XMLDocumentParser::textPosition() const { return TextPosition0(WTF::ZeroBasedNumber::fromZeroBasedInt(lineNumber()), WTF::ZeroBasedNumber::fromZeroBasedInt(columnNumber())); }
QSourceLocation MaintainingReader<TokenLookupClass, LookupKey>::currentLocation() const { return QSourceLocation(documentURI(), lineNumber(), columnNumber()); }
TextPosition XMLDocumentParser::textPosition() const { return TextPosition(lineNumber(), columnNumber()); }
void TraceListenerDefault::selected(const SelectionEvent& ev) { if(m_traceSelection == true) { const ElemTemplateElement& ete = ev.m_styleNode; if(ev.m_styleNode.getLineNumber() == XalanLocator::getUnknownValue()) { // You may not have line numbers if the selection is occuring from a // default template. ElemTemplateElement* const parent = ete.getParentNodeElem(); XalanDOMString msg(m_memoryManager); if(parent == ete.getStylesheet().getStylesheetRoot().getDefaultRootRule()) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::DefaultRootRule)); } else if(parent == ete.getStylesheet().getStylesheetRoot().getDefaultTextRule()) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::DefaultRootRule_1Param, Constants::ATTRNAME_DATATYPE)); } else if(parent == ete.getStylesheet().getStylesheetRoot().getDefaultRule()) { m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::DefaultRootRule_1Param, " ")); } } else { XalanDOMString msg(m_memoryManager); XalanDOMString lineNumb(m_memoryManager); XalanDOMString columnNumber(m_memoryManager); LongToDOMString(ev.m_styleNode.getLineNumber(), lineNumb); LongToDOMString( ev.m_styleNode.getColumnNumber(), columnNumber); m_printWriter.print( XalanMessageLoader::getMessage( msg, XalanMessages::TextAndColumnNumber_2Param, lineNumb, columnNumber)); } m_printWriter.print(ete.getElementName()); m_printWriter.print(", "); m_printWriter.print(ev.m_attributeName); m_printWriter.print("=\""); m_printWriter.print(ev.m_xpathExpression); m_printWriter.print("\": "); if (ev.m_selection.null() == true) { if (ev.m_type == SelectionEvent::eBoolean) { m_printWriter.println(ev.m_boolean == true ? "true" : "false"); } else if (ev.m_type == SelectionEvent::eNodeSet) { assert(ev.m_nodeList != 0); processNodeList(*ev.m_nodeList); } } else if(ev.m_selection->getType() == XObject::eTypeNodeSet) { processNodeList(ev.m_selection->nodeset()); } else { m_printWriter.println(ev.m_selection->str()); } } }