diff --git a/secretary.py b/secretary.py index f734588..aa3bf88 100644 --- a/secretary.py +++ b/secretary.py @@ -38,6 +38,7 @@ import re import sys import zipfile import io +from HTMLParser import HTMLParser from xml.dom.minidom import parseString from jinja2 import Environment, Undefined @@ -181,12 +182,12 @@ class Render(object): returns the rendered ODF document. """ + html_parser = HTMLParser() self.unpack_template() # Render content.xml self.prepare_template_tags(self.content) - # print(self.content.toprettyxml()) - template = self.environment.from_string(self.content.toxml()) + template = self.environment.from_string(html_parser.unescape(self.content.toxml())) result = template.render(**kwargs) result = result.replace('\n', '') @@ -200,7 +201,7 @@ class Render(object): # Render style.xml self.prepare_template_tags(self.styles) - template = self.environment.from_string(self.styles.toxml()) + template = self.environment.from_string(html_parser.unescape(self.styles.toxml())) result = template.render(**kwargs) result = result.replace('\n', '') self.styles = parseString(result.encode('ascii', 'xmlcharrefreplace')) @@ -332,7 +333,7 @@ class Render(object): # Avoid removing whole container, just original text:p parent field = self.node_parents(keep_field, 'text:p') parent = field.parentNode - + parent.removeChild(field)