def save_xml( kwargs, filename="" ): """ fonction: pour ecrire le fichier RssFeeds.xml, a partir d'une dico """ try: if not filename: filename = XML_PATH if kwargs and isinstance( kwargs, dict ): # build a tree structure root = ET.Element( "rssfeeds" ) root.text = "\n " #optional Comment c1 = ET.Comment( 'RSS feeds. To have multiple feeds, just add a feed to the set. You can also have multiple sets.' ) c2 = ET.Comment( 'To use different sets in your skin, each must be called from skin with a unique id.' ) c1.tail = "\n "; root.append( c1 ) c2.tail = "\n "; root.append( c2 ) #optional Comment writed in set tag id 100 only c3 = ET.Comment( "Rss Feed : passion-xbmc.org; created and used by script Installer Passion-XBMC" ) c3.tail = "\n " # build elements and sub elements for key, value in sorted( kwargs.items(), key=lambda k: int( k[ 0 ] ) ): set_elem = ET.SubElement( root, "set" ) set_elem.attrib.update( { "id": key, "rtl": value.get( "rtl", "false" ) } ) set_elem.text = "\n " set_elem.tail = "\n " if key == "100": set_elem.append( c3 ) for feed in value[ "feed" ]: feed_elem = ET.SubElement( set_elem, "feed" ) feed_elem.attrib.update( { "updateinterval": feed.get( "updateinterval", "30" ) } ) feed_elem.text = feed.get( "feed", "http://passion-xbmc.org/scraper/?forumrss=1" ) feed_elem.tail = "\n " try: feed_elem.tail = "\n " except: set_elem.text = "" if not value[ "feed" ]: set_elem.text = "" try: set_elem.tail = "\n" except: root.text = "\n" # wrap it in an ElementTree instance, and save as XML tree = ET.ElementTree( root ) # frost: I modified ElementTree.write for write standalone try: tree.write( filename, ENCODING, True ) except: tree.write( filename, ENCODING ) #If not error, refresh_rss and return filename path. refresh_rss() return filename except: print_exc()
def done(self): """ Final routine called when a process has completed and reporting is finalized. """ self.printDebug("[->]\ttestHandlerBase.done()") self.pctMatch = (self.matchCount / float(self.repCount)) * 100.0 if self.repDone > 0: if self.timeoutFlag: self.status = "TIMEDOUT" elif self.pctMatch > self.maxPctMatch or self.pctMatch < self.minPctMatch: self.printDebug('\tTest FAILED') self.status = 'FAIL' else: self.status = 'PASS' self.xmlResultTree.attrib['pctMatch'] = str(self.pctMatch) self.xmlResultTree.attrib['status'] = self.status # Dump the original Test Script into the output XML as a comment. testFileString = xmlObjToString(self.xmlFileTree.getroot()) testFileString = string.replace(testFileString, "--", "-") orig = ElementTree.Comment(testFileString) self.xmlResultTree._children.append(orig) # if command line: print out message indicating test status # colorize it too! if (self.options['cmdLine'] == True): msgStr = "" statusColor = "yellow" if self.status == "PASS": statusColor = "green" elif self.status == "FAIL": statusColor = "red" statusStr = "%s" % (ANSIstring(statusColor, self.status)) print logMessage(statusStr, self.testFileName) # cleanup if the cleanup handler exists cleanupFuncName = "cleanup_" + self.testType if hasattr(self, cleanupFuncName): cleanupFunc = getattr(self, cleanupFuncName) cleanupFunc() self.saveResultData() self.reset() self.printDebug("[<-]\ttestHandlerBase.done()")
def comment(self, tree, obj): if not obj.comments == "": com = ET.Comment(obj.comments) tree.append(com)