Найти - Пользователи
Полная версия: автоматизация изменения значений в теге xml файла в текущей папке и подпапках
Начало » Python для новичков » автоматизация изменения значений в теге xml файла в текущей папке и подпапках
1
banzau
Доброго времени суток, прошу помощи/совета по такому вопросу: имеется локальный репозиторий( по сути обычная папка на диске), в нем лежит родительский 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)
py.user.next
Надо сделать скрипт замены версии в любом файле (он принимает путь к файлу ввода, номер версии, путь к файлу вывода). Потом надо сделать второй скрипт, который обходит директории рекурсивно, отыскивает нужные файлы и применяет к каждому файлу первый скрипт. При этом для каждого файла сначала создаётся выходной файл рядом и только после его записи входной файл стирается, а выходной переименовывается на его место.

Почему нужно разделить скрипты - потому что второй скрипт можно применять и с использованием других скриптов. В идеале у второго скрипта должен быть параметр, в который передаётся путь к первому скрипту. Таким образом во второй скрипт можно подать скрипт обновления поля версии, а можно подать скрипт обновления поля автора, а можно подать скрипт полной конвертации документа.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB