text = str(text).decode("utf-8") textnode = self.documentObject.createTextNode(text) self.appendChild(textnode) return self def getElementById(self, id): return self.filter(id=id)[0] def filter(self, tag="*", **attrs): if 'class_' in attrs: attrs['class'] = attrs['class_'] del attrs['class_'] def matches(x): for key, value in attrs.iteritems(): if x.getAttribute(key) == value: if key == "title": x.setAttribute(key, "") return True return False return [x for x in self.getElementsByTagName(tag) if matches(x)] def template(self, filename): '''Parses "filename" and appends it contents to self''' filename = os.path.join(TPL_ROOT, filename) self.appendChild(xml.dom.minidom.parse(filename).documentElement) extend(xml.dom.minidom.Element, Element)
return self.filter(id=id)[0] @fix_attrs_names def filter(self, tag='*', attrs={}): def matches(element): for key, value in attrs.iteritems(): if element.get(key) == value: return True return False if not attrs: matches = lambda x: True return [x for x in self.getiterator(tag) if matches(x)] def template(self, filename, vars={}): '''Parses "filename" and appends it contents to self''' path = os.path.join(TPL_ROOT, filename) if os.path.exists(path): f = Replacer(path, vars) self.append(XML_safe(f.read(), path)) return True else: return False def html(self, html): '''Appends html. Must be wrapped in some tag''' self.append(XML_safe(html)) extend(ET._ElementInterface, Element)