У меня есть файл XML, который содержит настройки по умолчанию для приложения с графическим интерфейсом, управления устройством:Python и XML синтаксический анализ, модифицирование, сохранение
<Settings>
<Setting Name="Frame0_TypeTextBox" Type="UpDown" UpDownType="d">1</Setting>
<Setting Name="Frame1_TypeTextBox" Type="UpDown" UpDownType="d">2</Setting>
<Setting Name="Frame2_TypeTextBox" Type="UpDown" UpDownType="d">1</Setting>
<Setting Name="messageTypeBoxManual" Type="ComboBox" UpDownType="">4</Setting>
<Setting Name="Frame0_C1CounterTextBox" Type="UpDown" UpDownType="Hex">0015E0</Setting>
<Setting Name="Frame1_C1CounterTextBox" Type="UpDown" UpDownType="Hex">0015E0</Setting>
<Setting Name="Frame2_C1CounterTextBox" Type="UpDown" UpDownType="Hex">0015E0</Setting>
<Setting Name="Frame0_CtrlMsgTextBox" Type="UpDown" UpDownType="d">2</Setting>
<Setting Name="Frame1_CtrlMsgTextBox" Type="UpDown" UpDownType="d">2</Setting>
<Setting Name="Frame2_CtrlMsgTextBox" Type="UpDown" UpDownType="d">2</Setting>
<Setting Name="rxSeedBox" Type="UpDown" UpDownType="Hex">03777777</Setting>
<Setting Name="txSeedBox" Type="UpDown" UpDownType="Hex">03777777</Setting>
<Setting Name="forceRxSeed" Type="CheckBox" UpDownType="">False</Setting>
</Settings>
Там несколько сотен больше настроек, но все они следуют той же конвенции , этот файл генерируется приложением, о котором я упоминал, и макет должен быть сохранен, чтобы приложение прочитало его снова.
То, что я хочу сделать, это:
1) Прочитайте XML
2) Найти поля с Name = "rxSeedBox" и "txSeedBox" (Настройка имен являются уникальными)
3) Изменить их значения 03777777 к чему-то еще, например, 05FFFFFF и 08E243AF соответственно
4) Сохраните измененный XML, поэтому он может быть загружен в приложение
Вот код до сих пор:
import sys
import os
import time
import xml.etree.ElementTree as ET
from socket import * # portable socket interface plus constants
tree = ET.parse('txg.xml')
root = tree.getroot()
for Setting in root.findall('Setting'):
Name = Setting.get('Name')
Type = Setting.get('Type')
UpDownType = Setting.get('UpDownType')
print(Name, Type, UpDownType, Setting.text)
Практически все это делает в этот момент читается XML из файла и распечатать его содержимое. Я понятия не имею, чтобы найти конкретные, уникальные атрибуты имени, а затем изменить значения. Я попытался с
value = tree.findtext('Setting')
команд, но только использование я видел до сих пор было изменить атрибуты.
Я хочу, чтобы атрибуты оставались нетронутыми, но значения между тегами, которые нужно изменить. Как это сделать с ElementTree?
Я предполагаю, что в файле есть что-то еще нестандартное, поскольку этот фрагмент xml в вашем примере выглядит совершенно корректно. – Phylogenesis
Хм, может быть, это обычный XML. Если вы скажете, что это действительно так, я изменю описание. В этом файле больше ничего нет, просто больше
Mark
В этом нет ничего нестандартного. –