Wie wichtig ist es dir denn das du den HTML-Content innerhalb der XML-Datei im Klartext lesen kannst?
Weil wenn dich das nicht interessiert, würde ich den Vorschlag machen
den gesamtenen HTML-Stream mit Base46 zu kodieren und dann in deiner XML-Struktur abzuspeichern.
Wenn du den HTML-Content dann wiederhaben möchtest musst du ihn einfach nur wieder decodieren.
Eigentlich ganz easy und imho sichere Vorgehensweise:
Code: Alles auswählen
In [36]: html = u"""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
....: <html>
....: <head>
....: <meta http-equiv="content-type" content="text/html; charset=UTF-8">
....: <title>Bla</title>
....: </head>
....: <body>
....: <h1>Hello Wörld</h1>
....: </body>
....: </html>"""
In [37]: from xml.etree import ElementTree as ET
In [38]: import base64
In [39]: node = ET.Element("HTML")
In [41]: node.set("html", base64.encodestring(html.encode("utf-8")))
In [43]: xml = ET.tostring(node)
In [44]: root = ET.XML(xml)
In [45]: print unicode(base64.decodestring(root.get("html")), "utf-8")
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Bla</title>
</head>
<body>
<h1>Hello Wörld</h1>
</body>
</html>
Edit: Man kann zum Speicher sparen natrülich auch noch zlib extra dazu nehmen...