Skip to main content

Pythonic way to create xml files

Project description

Example of usage:

from __future__ import with_statement
from xmlbuilder import XMLBuilder
x = XMLBuilder(format=True)
with x.root(a = 1):
[x << ('node',{'val':i}) for i in range(10)]

print str(x)

will print

<root a="1">
<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" />

Mercurial repo:

`XMLBuilder` is simple library build on top of `ElementTree.TreeBuilder` to
simplify xml files creation as much as possible. Althow it can produce
structured result with identated child tags. `XMLBuilder` use python `with`
statement to define xml tag levels and `<<` operator for simple cases -
text and tag without childs.

First we need to create xmlbuilder

from xmlbuilder import XMLBuilder
# params - encoding = 'utf8',
# builder = None, - ElementTree.TreeBuilder
# tab_level = None, - current tab l;evel - for formatted output only
# format = False, - create formatted output
# tab_step = " " * 4 - indentation step
xml = XMLBuilder()

Use `with` statement to make document structure
#create and open tag 'root_tag' with text 'text' and attributes
with xml.root_tag(text,attr1=val1,attr2=val2):
#create and open tag 'sub_tag'
with xml.sub_tag(text,attr3=val3):
#create tag which are not valid python identificator
with xml('one-more-sub-tag',attr7=val37):
xml << "Some textual data"
#here tag 'one-more-sub-tag' are closed
#Tags without children can be created using `<<` operator
for val in range(15):
xml << ('message',"python rocks!"[:i])
#create 15 child tag like <message> python r</message>
#all tags closed
node = ~x # get etree.ElementTree object
xml_data = str(x)
unicode_xml_data = unicode(x)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (9.1 kB view hashes)

Uploaded Source

Built Distribution

xmlbuilder-0.9-py2.6.egg (9.0 kB view hashes)

Uploaded Source

Supported by

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