Получить значения из тега xml в текстовый файл с разделителями-запятыми в Unix - PullRequest
0 голосов
/ 02 мая 2018

У нас есть файл xml, который состоит из тегов xml различных процессов, запущенных на машинах. Я хочу получить имена всех процессов вместе с их запуском, командой остановки и сохранить их как запятую для каждого процесса.

Пример одного из тегов в файле ниже : -

<Описание> Бла Бла Бла </ Описание>

$ {PROCESS_LOG}

<Старт>

STARTPROCESS

<Параметры> 12 </ Параметры>

<Стоп>

STOPPROCESS

<Критерии поиска>

<Параметры> PROCESS12 </ Параметры>

*

Я хочу вывод, как показано ниже в текстовом файле: -

  • Аноним, STARTPROCESS 12, STOPPROCESS, SREACH12 PROCESS12

Обратите внимание, что в файле есть несколько таких тегов, поэтому я хочу, чтобы все они были такими же, как указано выше. Что-то в оболочке также будет работать. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 02 мая 2018

Используйте ре.

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
...