Я пытаюсь реализовать xml, составленный из пользовательских объективированных элементов с методами.Но субэлементы, похоже, теряют методы, связанные с ними.
В частности, это работает:
from lxml import etree, objectify
M = objectify.ElementMaker(annotate=False)
class A(objectify.ObjectifiedElement):
def insert_b(self, text):
self.B = M.Whatever(text)
some_xml = A(A())
some_xml.insert_b("Text")
etree.tostring(some_xml)
Вывод:
b'<A><A/><B>Text</B></A>'
Но это не так:
>>> some_xml.A.insert_b("Text")
Traceback (most recent call last)
...
AttributeError: 'lxml.etree._Element' object has no attribute 'insert_b'
Результат, который я ожидал, был b'<A><A><B>Text</B></A><B>Text</B></A>'
.
Есть ли способ, которым я могу это реализовать?