Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2019 22:50:39

banzau
Зарегистрирован: 2019-04-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

автоматизация изменения значений в теге xml файла в текущей папке и подпапках

Доброго времени суток, прошу помощи/совета по такому вопросу: имеется локальный репозиторий( по сути обычная папка на диске), в нем лежит родительский pom.xml и несколько подпапок дочерних модулей в каждой из которых также лежит свой pom.xml. Все помники связаны между собой и изменение версии модуля в корневом pom.xml, например с <version-api>1.0</version-api> на <version-api>2.0</version-api> влечет за собой необходимость изменять эту версию в каждом дочернем помнике, в котором она упоминается, что приходится делать вручную. Т.е. нужно чтобы скрипт анализировал каждый xml в корневой директории и поддиректориях, и при обнаружении тега <version-api> менял значение в нем та тоже что и в корневом помнике. На текущий момент получилось реализовать изменение значения версии только в корневом pom.xml, как поменять версию по всем остальным xml в подпапках не знаю.


import xml.dom.minidom
import xml.etree.ElementTree as ET
import os
import sys
dom = xml.dom.minidom.parse(“pom.xml”);
dom.normalize()
version=dom.getElementsByTagName(“version-api”)

print(“name=”+version.nodeName)
print(“value=”+version.childNodes.nodeValue)
a=str(input(“Введите название артефакта:”))
print(a)
b=str(input(“Введите версию артефакта:”))
print(b)
tree = ET.parse('pom.xml')
root = tree.getroot()
for elem in root.iter(a):
elem.text = (b)
tree.write('pom.xml')
node2=dom.getElementsByTagName(“node2”)
print(“name=”+version.nodeName)
print(“value=”+version.childNodes.nodeValue)

Офлайн

#2 Апрель 8, 2019 23:40:23

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

автоматизация изменения значений в теге xml файла в текущей папке и подпапках

Надо сделать скрипт замены версии в любом файле (он принимает путь к файлу ввода, номер версии, путь к файлу вывода). Потом надо сделать второй скрипт, который обходит директории рекурсивно, отыскивает нужные файлы и применяет к каждому файлу первый скрипт. При этом для каждого файла сначала создаётся выходной файл рядом и только после его записи входной файл стирается, а выходной переименовывается на его место.

Почему нужно разделить скрипты - потому что второй скрипт можно применять и с использованием других скриптов. В идеале у второго скрипта должен быть параметр, в который передаётся путь к первому скрипту. Таким образом во второй скрипт можно подать скрипт обновления поля версии, а можно подать скрипт обновления поля автора, а можно подать скрипт полной конвертации документа.



Отредактировано py.user.next (Апрель 8, 2019 23:45:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version