Skip to main content

pythonic way to create xml/(x)html files. Updated version with fixes, unicode support and cleaned API.

Project description

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:

<?xml version="1.0" encoding="utf-8" ?>
<root>
<some_tag />
<some_tag_with_data a="12">text</some_tag_with_data>
<some_tree a="1">
<data>
<mmm />
<node val="0" />
<node val="1" />
<node val="2" />
<node val="3" />
<node val="4" />
<node val="5" />
<node val="6" />
<node val="7" />
<node val="8" />
<node val="9" />
</data>
</some_tree>
</root>

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
(<?xml version="1.0" encoding="DOCUMENTENCODING">)
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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page