Writing XML/HTML content
Writing SGML-based languages is generally not very hard, most languages provide utilities to work with them, but if the document gets too big, it's easy to get lost when trying to build the tree of elements programmatically.
Ending up with hundreds of .addChild
or similar calls all after each other makes it really hard to understand where we were in the document and what part of it we are currently editing.
Thankfully, by joining the Python ElementTree
module with context managers, we can have a solution that allows our code structure to match the structure of the XML/HTML we are trying to generate.
How to do it...
For this recipe, perform the following steps:
- We can create an
XMLDocument
class that represents the tree of an XML/HTML document and haveXMLDocumentBuilder
assist in actually building the document by allowing us to insert tags and text:
import xml.etree.ElementTree as ET from contextlib import contextmanager class XMLDocument: def __init__(self, root...