Вставьте XML-документ в существующий XML с помощью Python

Учитывая эти XML-документы:

Документ 1

<root>
  <element1>
  </element1>
</root>

Документ 2

<request>
  <dummyValue>5</dummyValue>
</request>

Используя Pythons ElementTree, я хотел бы вставить второй документ в первый документ, чтобы результат выглядел следующим образом.

Результирующий документ

<root>
  <element1>
    <request>
      <dummyValue>5</dummyValue>
    </request>
  </element1>
</root>

ET.SubElement(element1, request) выдает ошибку сериализации.

Есть ли питонический способ сделать это?


person Robert Strauch    schedule 19.12.2017    source источник
comment
Если у вас есть код, который вызывает ошибку, сократите этот код до максимально короткого полного примера, демонстрирующего ошибку. См. минимальный воспроизводимый пример для получения дополнительной информации.   -  person Robᵩ    schedule 19.12.2017


Ответы (1)


SubElement() создает Element, а затем прикрепляет его к дереву. Поскольку у вас уже есть request как Element, вам не нужно создавать новый.

Попробуйте element1.append(request), вот так:

import xml.etree.ElementTree as ET

doc1 = ET.XML('''
<root>
  <element1>
  </element1>
</root>
''')

request = ET.XML('''
<request>
  <dummyValue>5</dummyValue>
</request>
''')

for element1 in doc1.findall('element1'):
    element1.append(request)

ET.dump(doc1)
person Robᵩ    schedule 19.12.2017