Вы пытаетесь сделать это:
import xml.etree.ElementTree as ET
root = ET.Element('root')
content_str = '<ph type="0" x="1"></ph>'
root.text = content_str
print(ET.tostring(root))
# <root><ph type="0" x="1"></ph></root>
По сути, это «внедрение» XML в свойство text элемента.Это не правильный способ сделать это.
Вместо этого вам следует преобразовать строку content
в фактический узел XML, который можно добавить к существующему узлу XML.
import xml.etree.ElementTree as ET
root = ET.Element('root')
content_str = '<ph type="0" x="1"></ph>'
content_element = ET.fromstring(content_str)
root.append(content_element)
print(ET.tostring(root))
# <root><ph type="0" x="1" /></root>
Если вы настаиваете, вы можете использовать unescape
:
import xml.etree.ElementTree as ET
from xml.sax.saxutils import unescape
root = ET.Element('root')
content_str = '<ph type="0" x="1"></ph>'
root.text = content_str
print(unescape(ET.tostring(root).decode()))
# <root><ph type="0" x="1"></ph></root>