def rss2(feed, pretty_print=True): indent = '\n ' if pretty_print else '' indent2 = '\n ' if pretty_print else '' rss = Element('rss', version='2.0') rss.text = '\n ' if pretty_print else '' channel = SubElement(rss, 'channel') channel.text = indent channel.tail = '\n' if pretty_print else '' set_rss2_text(SubElement(channel, 'title'), feed.title) set_rss2_text(SubElement(channel, 'description'), feed.subtitle or '') SubElement(channel, 'link').text = feed.link SubElement(channel, 'lastBuildDate').text = rss2_date(feed.updated) if feed.language: SubElement(channel, 'language').text = feed.language if feed.rights: SubElement(channel, 'copyright').text = feed.rights if feed.logo: image = SubElement(channel, 'image') image.text = indent2 SubElement(image, 'url').text = feed.logo SubElement(image, 'title').text = '' SubElement(image, 'link').text = feed.link for child in image: child.tail = indent2 image[-1].tail = '\n ' if pretty_print else '' for entry in feed.entries: item = entry.rss2(pretty_print) item[-1].tail = indent channel.append(item) for child in channel: child.tail = indent channel[-1].tail = '\n ' if pretty_print else '' return rss
def account_to_xml(listing, account_name): doc = Element('account', name=account_name) doc.text = '\n' for record in listing: if 'subdir' in record: name = record.pop('subdir') sub = SubElement(doc, 'subdir', name=name) else: sub = SubElement(doc, 'container') for field in ('name', 'count', 'bytes', 'last_modified'): SubElement(sub, field).text = six.text_type(record.pop(field)) sub.tail = '\n' return to_xml(doc)
def _to_html_elementtree(self,tblattr=None,method=str): if tblattr is None: tblattr = {'border':'1'} from xml.etree.cElementTree import Element, SubElement, ElementTree out = Element('table',**tblattr) out.text = out.tail = '\n' headings = SubElement(out,'tr') headings.tail = '\n' for key in self.keys(): heading = SubElement(headings,'th') heading.text=method(key) values = [export_string(value) for value in self.values()] cols = [] for col in values: if col is None: col = [col]*len(self) cols.append(col) for rownum in range(len(self)): datarow = SubElement(out,'tr') datarow.tail = '\n' for col in cols: datacell = SubElement(datarow,'td') datacell.text = method(col[rownum]) return ElementTree(out)
def account_to_xml(listing, account_name): doc = Element('account', name=account_name.decode('utf-8')) doc.text = '\n' for record in listing: if 'subdir' in record: name = record.pop('subdir') sub = SubElement(doc, 'subdir', name=name) else: sub = SubElement(doc, 'container') for field in ('name', 'count', 'bytes', 'last_modified'): SubElement(sub, field).text = six.text_type(record.pop(field)) sub.tail = '\n' return tostring(doc, encoding='UTF-8').replace( "<?xml version='1.0' encoding='UTF-8'?>", '<?xml version="1.0" encoding="UTF-8"?>', 1)
def account_to_xml(listing, account_name): doc = Element('account', name=account_name.decode('utf-8')) doc.text = '\n' for record in listing: if 'subdir' in record: name = record.pop('subdir') sub = SubElement(doc, 'subdir', name=name) else: sub = SubElement(doc, 'container') for field in ('name', 'count', 'bytes', 'last_modified'): SubElement(sub, field).text = six.text_type( record.pop(field)) sub.tail = '\n' return tostring(doc, encoding='UTF-8').replace( "<?xml version='1.0' encoding='UTF-8'?>", '<?xml version="1.0" encoding="UTF-8"?>', 1)
def _to_xml_elementtree(self,**kwargs): cfg = { 'tbl_element': 'table', 'row_element': 'row', } cfg.update(kwargs) from xml.etree.cElementTree import Element, SubElement, ElementTree out = Element(cfg['tbl_element']) out.text = out.tail = '\n' values = [export_string(value) for value in self.values()] cols = [] for col in values: if col is None: col = [col]*len(self) cols.append(col) row_element = cfg['row_element'] keys = self.keys() for rownum in range(len(self)): datarow = SubElement(out,row_element) datarow.tail = '\n' for key,col in zip(keys,cols): datacell = SubElement(datarow,key) datacell.text = str(col[rownum]) return ElementTree(out)
def createAP(self, elem, font, autoGdlFile) : e = SubElement(elem, 'glyph') if self.psname : e.set('PSName', self.psname) if self.uid : e.set('UID', self.uid) if self.gid is not None : e.set('GID', str(self.gid)) ce = None if 'classes' in self.properties and self.properties['classes'].strip() : tempClasses = self.properties['classes'] self.properties['classes'] = " ".join(font.filterAutoClasses(self.properties['classes'].split(), autoGdlFile)) for k in sorted(self.anchors.keys()) : v = self.anchors[k] p = SubElement(e, 'point') p.set('type', gr_ap(k)) p.text = "\n " l = SubElement(p, 'location') l.set('x', str(v[0])) l.set('y', str(v[1])) l.tail = "\n " if ce is not None : ce.tail = "\n " ce = p for k in sorted(self.gdlProperties.keys()) : if k == "*skipPasses*" : continue # not set in GDL v = self.gdlProperties[k] if v : p = SubElement(e, 'property') p.set('name', 'GDL_' + k) p.set('value', v) if ce is not None : ce.tail = "\n " ce = p if self.gdl and (not self.name or self.gdl != self.name.GDL()) : p = SubElement(e, 'property') p.set('name', 'GDLName') p.set('value', self.GDLName()) if ce is not None : ce.tail = "\n " ce = p for k in sorted(self.properties.keys()) : v = self.properties[k] if v : p = SubElement(e, 'property') p.set('name', k) p.set('value', v) if ce is not None : ce.tail = "\n " ce = p if self.comment : p = SubElement(e, 'note') p.text = self.comment if ce is not None : ce.tail = "\n " ce = p if 'classes' in self.properties and self.properties['classes'].strip() : self.properties['classes'] = tempClasses if ce is not None : ce.tail = "\n" e.text = "\n " e.tail = "\n" return e
def createAP(self, elem, font, autoGdlFile): e = SubElement(elem, 'glyph') if self.psname: e.set('PSName', self.psname) if self.uid: e.set('UID', self.uid) if self.gid is not None: e.set('GID', str(self.gid)) ce = None if 'classes' in self.properties and self.properties['classes'].strip(): tempClasses = self.properties['classes'] self.properties['classes'] = " ".join( font.filterAutoClasses(self.properties['classes'].split(), autoGdlFile)) for k in sorted(self.anchors.keys()): v = self.anchors[k] p = SubElement(e, 'point') p.set('type', gr_ap(k)) p.text = "\n " l = SubElement(p, 'location') l.set('x', str(v[0])) l.set('y', str(v[1])) l.tail = "\n " if ce is not None: ce.tail = "\n " ce = p for k in sorted(self.gdlProperties.keys()): if k == "*skipPasses*": continue # not set in GDL v = self.gdlProperties[k] if v: p = SubElement(e, 'property') p.set('name', 'GDL_' + k) p.set('value', v) if ce is not None: ce.tail = "\n " ce = p if self.gdl and (not self.name or self.gdl != self.name.GDL()): p = SubElement(e, 'property') p.set('name', 'GDLName') p.set('value', self.GDLName()) if ce is not None: ce.tail = "\n " ce = p for k in sorted(self.properties.keys()): v = self.properties[k] if v: p = SubElement(e, 'property') p.set('name', k) p.set('value', v) if ce is not None: ce.tail = "\n " ce = p if self.comment: p = SubElement(e, 'note') p.text = self.comment if ce is not None: ce.tail = "\n " ce = p if 'classes' in self.properties and self.properties['classes'].strip(): self.properties['classes'] = tempClasses if ce is not None: ce.tail = "\n" e.text = "\n " e.tail = "\n" return e