QDomDocument getSchemaExtension( QgsServerInterface *serverIface, const QString &version, const QgsServerRequest &request ) { Q_UNUSED( version ); Q_UNUSED( serverIface ); QgsServerRequest::Parameters parameters = request.parameters(); QDomDocument xsdDoc; QDir resourcesDir = QFileInfo( QgsApplication::serverResourcesPath() ).absoluteDir(); QFileInfo xsdFileInfo( resourcesDir, QStringLiteral( "schemaExtension.xsd" ) ); if ( !xsdFileInfo.exists() ) { QgsMessageLog::logMessage( QStringLiteral( "Error, xsd file 'schemaExtension.xsd' does not exist" ), QStringLiteral( "Server" ), QgsMessageLog::CRITICAL ); return xsdDoc; } QString xsdFilePath = xsdFileInfo.absoluteFilePath(); QFile xsdFile( xsdFilePath ); if ( !xsdFile.exists() ) { QgsMessageLog::logMessage( QStringLiteral( "Error, xsd file 'schemaExtension.xsd' does not exist" ), QStringLiteral( "Server" ), QgsMessageLog::CRITICAL ); return xsdDoc; } if ( !xsdFile.open( QIODevice::ReadOnly ) ) { QgsMessageLog::logMessage( QStringLiteral( "Error, cannot open xsd file 'schemaExtension.xsd' does not exist" ), QStringLiteral( "Server" ), QgsMessageLog::CRITICAL ); return xsdDoc; } QString errorMsg; int line, column; if ( !xsdDoc.setContent( &xsdFile, true, &errorMsg, &line, &column ) ) { QgsMessageLog::logMessage( QStringLiteral( "Error parsing file 'schemaExtension.xsd" ) + QStringLiteral( "': parse error %1 at row %2, column %3" ).arg( errorMsg ).arg( line ).arg( column ), QStringLiteral( "Server" ), QgsMessageLog::CRITICAL ); } return xsdDoc; }
bool CodingWidget::loadFile(QString xmlFilename) { qDebug() << "CodingWidget::loadFile(QString xmlFilename)"; QFile xmlFile(xmlFilename); if (!xmlFile.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("MDI"), tr("Cannot read file %1:\n%2.") .arg(xmlFilename) .arg(xmlFile.errorString())); return false; } xmlFile.setObjectName(xmlFilename); codingElementCount = 0; codingElementSize = 0; QApplication::setOverrideCursor(Qt::WaitCursor); reader = new CodingReader(); reader->read(&xmlFile, this); xmlFile.reset(); // XML QTextStream inXml(&xmlFile); setXml(inXml.readAll()); // XSD QFile xsdFile(getXsdFilename()); qDebug() << "getXsdFilename()): " << getXsdFilename(); if (!xsdFile.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("MDI"), tr("Cannot read file %1:\n%2.") .arg(getXsdFilename()) .arg(xsdFile.errorString())); return false; } QTextStream inXsd(&xsdFile); setXsd(inXsd.readAll()); QApplication::restoreOverrideCursor(); return true; }
/** * @brief Loads script configuration from an xml script. * * @param pXmlScriptFile: description of the xml config file to load. * @param config: the config loaded. * @return TRUE if operation succeed, FALSE otherwise. */ bool XmlConfigReader::loadConfig(QFile *pXmlScriptFile, ScriptConfig & config) { #ifdef TRACE_XMLCONFIGREADER { std::stringstream log; log << "XmlConfigReader::loadConfig("; log << "xmlScriptFile: " << pXmlScriptFile->fileName().toStdString(); log << ", config: " << &config; LOG_INFO(log.str()); } #endif QFile xsdFile(":/XML_CONFIG_SCHEMA"); if(!XmlValidator::getInstance().validate(pXmlScriptFile, &xsdFile)) { { std::stringstream err; err << "loadConfig() failed - xml script is not valid according to xml schema!"; LOG_ERROR(err.str()); } return false; } { std::stringstream log; log << "The xml document is valid."; LOG_DEBUG(log.str()); } QXmlInputSource source( pXmlScriptFile ); XmlConfigHandler *pConfigHandler = new XmlConfigHandler(config); QXmlSimpleReader reader; reader.setContentHandler( pConfigHandler ); reader.setLexicalHandler( pConfigHandler ); return reader.parse( source ); }