Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

lxml wrapper that simplifies xml generation code.

Project description

Author: matee
Source:See github for the latest source.
Documentation:lxml-wrapper@read-the-docs
BugTracker:Github issues
Build status Coverage Latest PyPI version Number of PyPI downloads Bitdeli Badge

About

This wrapper simplifies your Python xml generation code.

Changes

add_if

E('root').add_if(1==1, E('child')) # <root><child /></root>
E('root').add_if(1==0, E('child')) # <root/>

add_for

E('root').add_for([1,2], lambda item: E('item', attr=item)) # <root><item attr="1"/><item attr="2"/></root>

Dependencies

  • lxml http://codespeak.net/lxml/

Installation

pip install lxml-wrapper

Examples

XML

<root atr="100">
  text1
  <child atr="atr">
    <superchild atr="">sctext1</superchild>
    tail1
    tail2
  </child>
  tail
  <child atr="">text</child>
</root>

Old way

root = Element('root', atr=str(100))
root.text = 'text1'
child = SubElement(root, 'child', atr="atr")
superchild = SubElement(root, 'superchild', atr="" if value is None else value)
superchild.text = 'sctext1'
superchild.tail = 'tail1'
superchild.tail += 'tail2'
child.tail = 'tail'
child = SubElement(root, 'child', atr="")
child.text = 'text'

New way

root = E('root', atr=100).add(
         'text1',
         E('child', atr="atr").add(
           E('superchild', atr=None).add('sctext1'),
           'tail1',
           'tail2'
         ),
         'tail',
         E('child', atr="").add(
             'text'
         )
     )

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page