Skip to main content

Generate XML from Python data structure

Project description

xml_from_seq

Generate XML from a Python data structure.

Examples

The XML() function renders a Python list or tuple to an XML element. The first item is the element name, the second item – if it's a dict – is the attributes, and the rest of the items are either text or nested elements.

from xml_from_seq import XML

item = ['item', {'attr1': 123, 'attr2': 'other value'}, 'This is the content of the item.']
assert XML(item) == '<item attr1="123" attr2="other value">This is the content of the item.</item>'

item = [
    'item',
    'This is some content of the item.'
    ['sub', 'This is the content of a subelement.']
]
print(XML(item))
 <item>
    This is some content of the item.
    <sub>
        This is the content of a subelement.
    </sub>
</item>

If a element's name is None its contents will appear in its place. If an attribute's value is None it will be omitted.

If an element's name is a list or tuple, it will be inserted into the XML as-is – so you can inclue already-rendered XML by double-bracketing it:

print(XML([['<foo>123</foo>']]))
<foo>123</foo>

Indentation and line breaks

If the first item in an element (not counting an attribute dict) is xml_from_seq.INLINE, that element's contents won't be indented on separate lines from the element's start and end tags.

from xml_from_seq import INLINE, XML

item = [
    'item',
    'This is some content of the item.'
    ['sub', INLINE, 'This is the content of a subelement.']
]
print(XML(item))
 <item>
    This is some content of the item.
    <sub>This is the content of a subelement.</sub>
</item>

You can pass an integer indent parameter to the XML() function to indent the output XML by that many tabs.

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

xml_from_seq-0.1.0.tar.gz (2.6 kB view hashes)

Uploaded Source

Built Distribution

xml_from_seq-0.1.0-py3-none-any.whl (2.7 kB view hashes)

Uploaded Python 3

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