diff options
-rw-r--r-- | ishtar_common/utils_secretary.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ishtar_common/utils_secretary.py b/ishtar_common/utils_secretary.py index d87201c6a..e8fae9e59 100644 --- a/ishtar_common/utils_secretary.py +++ b/ishtar_common/utils_secretary.py @@ -1,6 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from secretary import Renderer, parseString +from secretary import Renderer +from lxml import etree +from xml.dom.minidom import parseString from xml.parsers.expat import ExpatError, ErrorString from datetime import datetime @@ -151,7 +153,12 @@ class IshtarSecretaryRenderer(Renderer): result = jinja_template.render(**kwargs) - final_xml = parseString(result.encode("ascii", "xmlcharrefreplace")) + # try to fix xml with mismatched tags + parser = etree.XMLParser(recover=True) + recovered_xml = etree.fromstring(result.encode("ascii", "xmlcharrefreplace"), parser) + + final_xml = parseString(etree.tostring(recovered_xml)) + if self.template_images: self.replace_images(final_xml) |