import re
# Open the xml file.
with open('test1.xml', encoding='utf-8') as r:
# Read the file contents whole.
content = r.read()
# Do replacements using regex.
content = re.sub(r'^\s*(<channel)\s+.*?\s+site_id="(.*?)"\s+xmltv_id="(.*?)">.*?(</channel>)',
r'<!-- vermin -->\1 id="\3">\2\4<!-- VM -->', content, 0, re.I + re.M)
# Open and write the changed xml file.
with open('test2.xml', 'w', encoding='utf-8') as w:
w.write(content)
Python 3 используется, так как вы упомянули Python в кратком изложении своего вопроса.
Это использует регулярные выражения для изменения XML.Если XML имеет разумную структуру констант, как в приведенном примере, это может соответствовать вашей цели.
test1.xml
считывается, и изменения выполняются с использованием шаблона регулярного выражения с re.sub()
.
test2.xml
- это файл XML с внесенными изменениями.
Оба файла обрабатываются как utf-8
.
Прочитайте файл справки Python о re
*Модуль 1018 *.
Краткий обзор используемых регулярных выражений.
^
соответствует началу строки. \s
соответствует пробельным символам. *
соответствует 0 или более предыдущему шаблону | символа. +
соответствует 1 или более предыдущему шаблону | символа. (.*?)
захватывает любой символ в качестве группыне жадный. \1
1-я группа в качестве замены.\2
- 2-я группа ... re.I
- флаг нечувствительности. re.M
- многострочный флаг, поэтому можно использовать линейные якоря ^
и $
.
Предлагаем прочитать справочный файл Python, так как он более полон для изучения.