У нас есть xml-файл, который состоит из xml-тегов различных процессов, запущенных на машинах. Я хочу получить имена всех процессов вместе с их командой start, stop и сохранить ее как разделенные запятыми для каждого процесса.
Example of one of tag in file is below:-
<ИМЯ ПРОЦЕССА = "Анонимный" TEMP = "Нет">
<Описание> Бла Бла Бла </ Описание>
<LogFile> $ {PROCESS_LOG} </ LogFile>
<Пользователь = "ABC">
<Старт>
<Команда> СТАРТПРОЦЕСС </ Команда>
<Параметры> 12 </ Параметры>
</ Пуск>
<Стоп>
<Команда> СТОП ПРОЦЕСС </ Команда>
</ Стоп>
<SearchCriteria>
<ExeName = "SREACH12">
<Параметры> ПРОЦЕСС12 </ Параметры>
</ ExeName>
</ SearchCriteria>
</ Пользователь>
</ ПРОЦЕСС>
*
I Want output as below in text file :-
Анонимный, STARTPROCESS 12, STOPPROCESS, SREACH12 PROCESS12
Обратите внимание, что в файле есть несколько таких тегов, поэтому я хочу, чтобы все они были такими же, как указано выше. Что-то в оболочке тоже будет работать. Пожалуйста помоги.
Используйте re.
import re
text ='< PROCESS NAME = "Anonymous" TEMP = "No" > \
< Description>Bla Bla Bla< /Description > \
< LogFile>${PROCESS_LOG}< /LogFile >\
< User = "ABC" >\
< Start >\
< Command>STARTPROCESS< /Command >\
< Parameters>12< /Parameters >\
< /Start >\
< Stop >\
< Command>STOPPROCESS< /Command >\
< /Stop >\
< SearchCriteria >\
< ExeName = "SREACH12" >\
< Parameters>PROCESS12< /Parameters >\
< /ExeName >\
< /SearchCriteria >\
< /User >'
# Target: Anonymous,STARTPROCESS 12,STOPPROCESS,SREACH12 PROCESS12
pName = re.findall(r'PROCESS NAME = "(.+?)" TEMP', text)
commands = re.findall(r'< Command>(.+?)< /Command >', text)
params = re.findall(r'< Parameters>(.+?)< /Parameters >', text)
exeName = re.findall(r'< ExeName = "(.+?)" >', text)
myOutput = pName[0]+","+commands[0]+" "+params[0]+","+commands[1]+","+exeName[0]+" "+params[1]
print(myOutput)
Печать:
Anonymous,STARTPROCESS 12,STOPPROCESS,SREACH12 PROCESS12
Аналогичным образом вы можете получить данные из других тегов. Просто измените параметры соответствия в начале и конце соответственно для каждого re.match (). Возможно, вам придется выполнить рекурсивную проверку команды и параметров каждого pName.
Спасибо за помощь. Но в приведенном выше примере я указал только один тег, и у меня есть несколько тегов, как указано выше, в файле xml. Итак, мне нужно получить эти данные из файла xml для всех.