Я использую 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("ShadowYOffset")" N="ShapeShdwOffsetY" U="IN" V="-0.0625" />
, поэтому предложение становится "
, а записи инвертируются. Как я могу сказать ElementTree сохранить все, кроме измененного текста?