ElementTree изменяет всю структуру файла XML без запроса - PullRequest
0 голосов
/ 09 марта 2020

Я использую ElementTree для изменения файла Microsoft Visio. Я проанализировал файл, искал «Текст» и изменил его. Однако, упаковав все обратно в MS Visio, файл не работает. ElementTree, кажется, переписывает все виды вещей в дереве, о которых я не просил.

Код в основном таков:

tree = ET.parse(filename)
root = tree.getroot()

for content in root.iter('{http://schemas.microsoft.com/office/visio/2012/main}Text'):
        for child in content:
                newText = modified_child.tail
                child.tail = newText
tree.write('newfileName.xml',encoding="UTF-8",xml_declaration=True)

Последняя строка содержит параметры, потому что ET вставляет акценты как Unicodes, если нет параметров.

В результате получается файл, в котором много записей дерева различны. Например,

<Cell N='ShapeShdwOffsetY' V='-0.0625' U='IN' F='THEME("ShadowYOffset")'/>

становится

<Cell F="THEME(&quot;ShadowYOffset&quot;)" N="ShapeShdwOffsetY" U="IN" V="-0.0625" />

, поэтому предложение становится &quot;, а записи инвертируются. Как я могу сказать ElementTree сохранить все, кроме измененного текста?

...