#python #python-3.x #xml
Вопрос:
Я хочу заменить имя пользователя и пароль из XML и сохранить структуру такой, какая она есть. Не могли бы вы помочь мне, пожалуйста, я перепробовал много вещей, но они не работали для меня.
Мой текущий xml:
lt;?xml version="1.1" encoding="UTF-8"?gt; lt;Settingsgt; lt;Usergt; lt;Hostnamegt;localhostlt;/Hostnamegt; lt;Databasenamegt;xlt;/Databasenamegt; lt;Usernamegt;ABClt;/Usernamegt; lt;Passwordgt;124lt;/Passwordgt; lt;Remembergt;lt;/Remembergt; lt;/Usergt; lt;/Settingsgt;
Мой Код:
mytree = ET.parse('project/config.xml') myroot = mytree.getroot() ... username = self.username.text() password = self.password.text() if self.rmbCheckBox.checkState() == Qt.Checked: for x in myroot.findall('User'): #Here i want to change the XML 'Username' and 'Password' item = x.find('Username') mytree.write('user.xml')
Ответ №1:
Попробуйте сделать следующее
import xml.etree.ElementTree as ET xml = '''lt;?xml version="1.1" encoding="UTF-8"?gt; lt;Settingsgt; lt;Usergt; lt;Hostnamegt;localhostlt;/Hostnamegt; lt;Databasenamegt;xlt;/Databasenamegt; lt;Usernamegt;ABClt;/Usernamegt; lt;Passwordgt;124lt;/Passwordgt; lt;Remembergt;lt;/Remembergt; lt;/Usergt; lt;/Settingsgt;''' root = ET.fromstring(xml) root.find('.//Username').text = 'new_user_name' root.find('.//Password').text = 'new_password' ET.dump(root)
выход
lt;Settingsgt; lt;Usergt; lt;Hostnamegt;localhostlt;/Hostnamegt; lt;Databasenamegt;xlt;/Databasenamegt; lt;Usernamegt;new_user_namelt;/Usernamegt; lt;Passwordgt;new_passwordlt;/Passwordgt; lt;Remember /gt; lt;/Usergt; lt;/Settingsgt;