python после записи дерева xml в файл вызывает другой стиль закрытия тегов - почему? - PullRequest
0 голосов
/ 23 марта 2020

Я изменяю XML документы xml .etree.ElementTree и после этого я записываю новую (измененную) XML структуру в новый файл.

Если я сравниваю исходную с новой Во-первых, я вижу, что python меняет стиль закрывающих тегов.

Оригинальный стиль:

<prop name="Type"></prop>

Модифицированный стиль:

<prop name="Type" />

Я знаю, что новый стиль абсолютно правильный, но я немного волнуюсь, что это может вызвать плохие побочные эффекты в устаревшей системе, над которой я работаю. Так что есть шанс иметь тот же стиль закрытия, что и в исходном XML документе (<prop name="Type"></prop>, а не в коротком <prop name="Type" />)

Модифицированное дерево записывается обратно в файл через:

tree.write(panelModPath,encoding='utf-8', xml_declaration=True) 

1 Ответ

2 голосов
/ 23 марта 2020

write метод принимает method аргумент. Вы можете установить его на html, чтобы сохранить закрывающий тег.

import xml.etree.ElementTree as ET
from io import BytesIO

source = """
<prop name="Type"></prop>
"""

tree = ET.ElementTree(ET.fromstring(source))
file = BytesIO()

tree.write(file, encoding='utf-8', method="html", xml_declaration=True)

print(file.getvalue())

Печать:

b'<prop name="Type"></prop>'
...