Hi folks, lxml.objectfy lets us define custom types by means of objectify.PyType and ObjectifiedDataElement sub classes, e.g. as in [0]. It's nice how they map to XSD and automatically convert between python type and XML representation. I understand how it works for scalar leaf nodes. But does objectify.PyType work for structured/nested types as well? Or is PyType the wrong tool and one should better head over to "Generating XML with custom classes" [1] and "Custom element class lookup" [2]? Or is it not possible at all? Simple imaginary code: ---snip--- from collections import namedtuple from lxml import etree, objectify # A structured python type MyStructuredThing = namedtuple('MyStructuredThing', 'a b') # some custom code and registration like with objectify.PyType here # ... root = objectify.Element("root") # magically take python type and construct tree + leaf elements automagically root.mystructuredthing = MyStructuredThing(1, 2) etree.tostring(root, pretty_print=True) ---snap--- Expected output: <root> <mystructuredthing> <a>1</a> <b>1</b> </mystructuredthing> <root> etree.fromstring should in turn deserialize this XML snippet, so that isinstance(root.mystructuredthing.pyval, MyStructuredThing) == True. Thanks Tobias [0] https://lxml.de/api/lxml.tests.test_objectify-pysrc.html#ObjectifyTestCase.t... [1] https://lxml.de/element_classes.html#generating-xml-with-custom-classes [2] https://lxml.de/element_classes.html#custom-element-class-lookup