Added code to handle unexpected start tags to the new XML readers.

Sat, 11 Sep 2010 19:00:54 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 11 Sep 2010 19:00:54 +0200
changeset 589
a9a4620f6767
parent 588
573767cf6bde
child 590
beb60b9b3d8d

Added code to handle unexpected start tags to the new XML readers.

E5XML/PluginRepositoryReader.py file | annotate | diff | comparison | revisions
E5XML/TasksReader.py file | annotate | diff | comparison | revisions
E5XML/TemplatesReader.py file | annotate | diff | comparison | revisions
E5XML/XMLStreamReaderBase.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
--- 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>

eric ide

mercurial