I'm creating an web api and need a good way to very quickly generate some well formatted xml. I cannot find any good way of doing this in python.
Note: Some libraries look promising but either lack documentation or only output to files.
Extensible Markup Language(XML), is a markup language that you can use to create your own tags.
The XML Generator is a powerful tool for automatically generating XML instance documents which conform to any XML Schema data model. (illustrated below - click to enlarge). The generation of the sample XML files can be customized according to your preferences, and always results in valid, well-formed XML.
Using lxml:
from lxml import etree # create XML root = etree.Element('root') root.append(etree.Element('child')) # another child with text child = etree.Element('child') child.text = 'some text' root.append(child) # pretty string s = etree.tostring(root, pretty_print=True) print s
Output:
<root> <child/> <child>some text</child> </root>
See the tutorial for more information.
ElementTree is a good module for reading xml and writing too e.g.
from xml.etree.ElementTree import Element, SubElement, tostring root = Element('root') child = SubElement(root, "child") child.text = "I am a child" print(tostring(root))
Output:
<root><child>I am a child</child></root>
See this tutorial for more details and how to pretty print.
Alternatively if your XML is simple, do not underestimate the power of string formatting :)
xmlTemplate = """<root> <person> <name>%(name)s</name> <address>%(address)s</address> </person> </root>""" data = {'name':'anurag', 'address':'Pune, india'} print xmlTemplate%data
Output:
<root> <person> <name>anurag</name> <address>Pune, india</address> </person> </root>
You can use string.Template or some template engine too, for complex formatting.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With