Проблема в том, что этот код
p = et.Element("p")
child = et.SubElement(p, "s" )
создает новый элемент <p>
, который не является частью дерева, и присоединяет к нему подэлемент. Само дерево осталось без изменений.
Присоедините новый подэлемент к элементу <p>
, который вы найдете в дереве.
>>> for elem in root:
... if elem.tag == 'p':
... ET.SubElement(elem, 's')
...
<Element 's' at 0x7f7810b24e58>
<Element 's' at 0x7f780ffdf4f8>
>>> ET.tostring(root)
b'<text><p><s /></p><p><s /></p></text>'