По запросу моего подписчика Евгений Засимов, а именно:
ДД сделайте пример изменения файла - к примеру есть несколько файлов xml и внутри них нужно поменять адреса организаций, спасибо
У нас есть некий файл с расширением XML.
XML - это расширяемый язык разметки.
Подробнее можно почитать тут.
Создадим 3 xml файла с содержимым:
datasite_1
<?xml version="1.0" ?>
<header>
<sitename name="1" />
<sitephone phone="77778889966" />
<siteaddress address="Street name 1" />
</header>
datasite_2
<?xml version="1.0" ?>
<header>
<sitename name="2" />
<sitephone phone="77778889966" />
<siteaddress address="Street name 2" />
</header>
datasite_3
<?xml version="1.0" ?>
<header>
<sitename name="2" />
<sitephone phone="77778889966" />
<siteaddress address="Street name 3" />
</header>
Теперь давайте напишем программу, которая поменяет адрес в каждом файле.
Листинг 1
# Импортируем бибилиотеку для работы с XML
import xml.etree.ElementTree as ET
# Создадим словарь на какие значения мы будем менять адрес в XML файле
# Словрь id магазина - адрес магазина
address = {1: 'Change to Street name 34', 2: 'Change to Street name 35', 3 : 'Change to Street name 36'}
# Создадим переменную в которой будем хранить редактируемые файа
file_list = ['datasite_1.xml', 'datasite_2.xml', 'datasite_3.xml']
# Реализуем цикл в котором будем изенять аттрибут address в теге siteaddress
# А получать новые данные из словаря
for file in file_list:
et = ET.parse(file)
data = et.getroot()
id = int(data.find('siteid').attrib['id'])
newValue = address.get(id)
data.find('siteaddress').attrib['address'] = newValue
et.write(file)
После выполнения кода в наших XML изменились данные под тегом siteaddress.
datasite_1
<?xml version="1.0" ?>
<header>
<sitename name="1" />
<sitephone phone="77778889966" />
<siteaddress address="Change to Street name 34" />
</header>
datasite_2
<?xml version="1.0" ?>
<header>
<sitename name="2" />
<sitephone phone="77778889966" />
<siteaddress address="Change to Street name 35" />
</header>
datasite_3
<?xml version="1.0" ?>
<header>
<sitename name="2" />
<sitephone phone="77778889966" />
<siteaddress address="Change to Street name 36" />
</header>
Тег в XML это значение которое находится в <> (угловых скобках), а атрибутом(свойствами) будет является то, что находится внутри <> (угловых скобках).
В реально же мире алгоритм обработки файлов XML может быть горадно сложнее, в нём может будет куда больше параметров.
Надеюсь, я смог привести корректный пример.
Другие статьи канала: