"""
Parses XML and HTML to `lxml `_ nodes
"""
from lxml import etree
from httpencode.format import Format
def load_xml(fp, content_type):
return etree.parse(fp)
def dump_xml_iter(data, content_type):
return [etree.tostring(data)]
xml = Format(
'lxml_xml', ['text/xml', 'application/xml'],
type='lxml.etree',
load=load_xml,
dump_iter=dump_xml_iter,
secure=True)
def load_html(fp, content_type):
return etree.parse(fp, etree.HTMLParser())
def dump_html_iter(data, content_type):
return [str(html_transform(data))]
html_xsl = '''
'''
html_transform = etree.XSLT(etree.XML(html_xsl))
# Should include other HTML types
html = Format(
'lxml_html', ['text/html'],
type='lxml.etree',
load=load_html,
dump_iter=dump_html_iter,
secure=True)