Question

Having following Python code:

>>> from lxml import etree
>>> root = etree.XML("<a><b></b></a>")
>>> etree.tostring(root)
'<a><b/></a>'

How can I force lxml to use "long" version?

Like

>>> etree.tostring(root)
'<a><b></b></a>'
Was it helpful?

Solution

>>> import lxml.html
>>> html = lxml.html.fromstring('<a><b></b></a>')
>>> lxml.html.tostring(html)
'<a><b></b></a>'

Mixing works as well:

>>> from lxml import etree
>>> import lxml.html
>>> xml = etree.XML('<a><b/></a>')
>>> lxml.html.tostring(xml)
'<a><b></b></a>'

OTHER TIPS

Why do you want to? Both are equivalent in terms of XML's data model.

from the docs

http://lxml.de/tutorial.html#serialisation

    from lxml import etree
    xml = etree.XML('<a><b/></a>')
    etree.tostring(xml, method='html')
    '<a><b></b></a>'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top