Sat, 11 Sep 2010 19:00:54 +0200
Added code to handle unexpected start tags to the new XML readers.
--- a/E5XML/PluginRepositoryReader.py Sat Sep 11 19:00:10 2010 +0200 +++ b/E5XML/PluginRepositoryReader.py Sat Sep 11 19:00:54 2010 +0200 @@ -44,6 +44,8 @@ Preferences.setUI("PluginRepositoryUrl5", url) elif self.name() == "Plugin": self.__readPlugin() + else: + self._skipUnknownElement() self.showErrorMessage() @@ -87,3 +89,5 @@ pluginInfo["version"] = self.readElementText() elif self.name() == "Filename": pluginInfo["filename"] = self.readElementText() + else: + self.raiseUnexpectedStartTag(self.name())
--- a/E5XML/TasksReader.py Sat Sep 11 19:00:10 2010 +0200 +++ b/E5XML/TasksReader.py Sat Sep 11 19:00:54 2010 +0200 @@ -51,6 +51,8 @@ self.version = self.attribute("version", tasksFileFormatVersion) elif self.name() == "Task": self.__readTask() + else: + self.raiseUnexpectedStartTag(self.name()) self.showErrorMessage() @@ -101,6 +103,8 @@ elif self.name() == "Created": task["created"] = time.mktime( time.strptime(self.readElementText(), "%Y-%m-%d, %H:%M:%S")) + elif self.name() == "Resource": + continue # handle but ignore this tag elif self.name() == "Filename": task["filename"] = \ Utilities.toNativeSeparators(self.readElementText()) @@ -109,3 +113,5 @@ task["linenumber"] = int(self.readElementText()) except ValueError: pass + else: + self.raiseUnexpectedStartTag(self.name())
--- a/E5XML/TemplatesReader.py Sat Sep 11 19:00:10 2010 +0200 +++ b/E5XML/TemplatesReader.py Sat Sep 11 19:00:54 2010 +0200 @@ -44,6 +44,8 @@ self.version = self.attribute("version", templatesFileFormatVersion) elif self.name() == "TemplateGroup": self.__readTemplateGroup() + else: + self.raiseUnexpectedStartTag(self.name()) self.showErrorMessage() @@ -63,6 +65,8 @@ if self.isStartElement(): if self.name() == "Template": self.__readTemplate() + else: + self.raiseUnexpectedStartTag(self.name()) def __readTemplate(self): """ @@ -85,3 +89,5 @@ templateDescription = self.readElementText() elif self.name() == "TemplateText": templateText = self.readElementText() + else: + self.raiseUnexpectedStartTag(self.name())
--- a/E5XML/XMLStreamReaderBase.py Sat Sep 11 19:00:10 2010 +0200 +++ b/E5XML/XMLStreamReaderBase.py Sat Sep 11 19:00:54 2010 +0200 @@ -44,12 +44,20 @@ if self.hasError(): msg = QCoreApplication.translate("XMLStreamReaderBase", "<p>XML parse error in file <b>{0}</b>, line {1}, column {2}<p>" - "<p>Error: {3}").format(self.device.fileName(), + "<p>Error: {3}").format(self.device().fileName(), self.lineNumber(), self.columnNumber(), self.errorString()) E5MessageBox.warning(None, - self.trUtf8("XML parse error"), - self.trUtf8(msg)) + QCoreApplication.translate("XMLStreamReaderBase", "XML parse error"), + msg) + + def raiseUnexpectedStartTag(self, tag): + """ + Public method to raise an error for an unexpected start tag. + @param tag name of the unexpected tag (string) + """ + self.raiseError(QCoreApplication.translate("XMLStreamReaderBase", + "Unexpected start tag '{0}'.".format(tag))) def readXML(self): """
--- a/eric5.e4p Sat Sep 11 19:00:10 2010 +0200 +++ b/eric5.e4p Sat Sep 11 19:00:54 2010 +0200 @@ -719,7 +719,6 @@ <Source>E5XML/Config.py</Source> <Source>E5XML/__init__.py</Source> <Source>E5XML/TasksWriter.py</Source> - <Source>E5XML/TemplatesHandler.py</Source> <Source>E5XML/SessionHandler.py</Source> <Source>E5XML/UserProjectWriter.py</Source> <Source>E5XML/UserProjectHandler.py</Source> @@ -821,6 +820,7 @@ <Source>E5XML/XMLStreamReaderBase.py</Source> <Source>E5XML/PluginRepositoryReader.py</Source> <Source>E5XML/TasksReader.py</Source> + <Source>E5XML/TemplatesReader.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>