Как изменить значение между <a><a/> python lxml - PullRequest
0 голосов
/ 26 января 2019

Итак, у меня есть XML-файл, в котором я хочу сохранить строку.

Я перепробовал все, что нашел по другим вопросам, даже имея значение, сохраненное в атрибуте

Вот мой файл .xml:

<a>value<a/>

Мне нужно изменить 'value 'с пользовательским вводом.

def log(self):
    self.tree = etree.fromstring('info.xml')
    self.sh = self.tree.find('a')
    self.inusr = input('Your new username: ')
    self.sh.set('user', self.inusr)

Проблема с этой попыткой состоит в том, что она изменяет только значение пользовательского атрибута.Чтобы исправить это, я попытался удалить атрибут в последней строке, но он не работал.

1 Ответ

0 голосов
/ 27 января 2019

Атрибут text может быть полезен: my.xml:

<data>
    <a>value1</a>
    <a>value2</a>
</data>

main.py:

import xml.etree.ElementTree as ET

tree = ET.parse('my.xml')
sh_list = tree.findall('a')
inusr = input('Your new username: ')
for sh in sh_list:
        sh.text = inusr
tree.write('my.xml')

ввод:

myname

изменено my.xml:

<data>
    <a>myname</a>
    <a>myname</a>
</data>
...