Я начинаю играть с Python, но попал в стену в xml.
Я пытаюсь отредактировать подэлемент xml, который, возможно, хранится не очень обычным способом , он имеет много чисел в виде текста и больше похож на вектор со всеми подэлементами, названными 'double', хотя на самом деле это текст ... тогда я ожидал, что xml будет.
Это Пример такого файла
<simulation>
<element1>'A'</element1>
<element2>
<subelement1>
<double>1</double>
<double>2</double>
<double>3</double>
<double>4</double>
<double>5</double>
</subelement1>
<subelement2>
<double>1</double>
<double>2</double>
<double>3</double>
<double>4</double>
<double>5</double>
</subelement2>
</element2>
</simulation>
Что я хочу сделать, это изменить значения всех дочерних узлов с subelement1, скажем, 10, 20, 30, 40, 50, что-то вроде этого в конце:
<simulation>
<element1>'A'</element1>
<element2>
<subelement1>
<double>10</double>
<double>20</double>
<double>30</double>
<double>40</double>
<double>50</double>
</subelement1>
<subelement2>
<double>1</double>
<double>2</double>
<double>3</double>
<double>4</double>
<double>5</double>
</subelement2>
</element2>
</simulation>
Может получить доступ ко всем узлам, которые я хочу изменить, с помощью этого:
import xml.etree.ElementTree as ET
for elem in root:
for subelem in elem.findall('.//element1/double'):
print(subelem.attrib)
print(subelem.text)
Это показывает числа, которые я хочу изменить (см. Ниже), но я не смог найти способ на самом деле измените их на те, которые мне нужны.
{} 1 {} 2 {} 3 {} 4 {} 5
Если я попытаюсь использовать его как вектор или что-то вроде этого:
for elem in root:
for subelem in elem.findall('.//element1/double'):
subelem.text = [10,20,30,40,50]
print(subelem.text)
В итоге я не заменяю, а добавляю информацию, и результаты:
{} 1 [10,20,30,40,50]
{} 2 [10,20,30,40,50]
{} 3 [10,20,30,40,50]
{} 4 [10,20,30,40,50]
{} 5 [10,20,30,40,50]
Каким будет способ внесения изменений? Большое спасибо.