XMLBuilder is tiny library build on top of ElementTree.TreeBuilder to make xml files creation more pythonomic. `XMLBuilder` use `with` statement and attribute access to define xml document structure. Only 2.5+ python versions are supported. from __future__ import with_statement # only for python 2.5 from xmlbuilder import XMLBuilder x = XMLBuilder('root') x.some_tag x.some_tag_with_data('text', a='12') with x.some_tree(a='1'): with x.data: x.mmm for i in range(10): x.node(val=str(i)) etree_node = ~x # <= return xml.etree.ElementTree object print str(x) # <= string object will result: text There some fields, which allow xml output customization: formatted = produce formatted xml. default = True tabstep = tab string, used for formatting. default = ' ' * 4 encoding = xml document encoding. default = 'utf-8' xml_header = add xml header () to begining of the document. default = True builder = builder class, used for create dcument. Default = xml.etree.ElementTree.TreeBuilder Options can be readed by x = XMLBuilder('root') print x[option_name] and changed by x[option_name] = new_val Look at xmlbuilder/test.py for UT and more examples. Happy xml'ing.