从 xml 标签获取值到 unix 中的逗号分隔文本文件
Posted
技术标签:
【中文标题】从 xml 标签获取值到 unix 中的逗号分隔文本文件【英文标题】:Fetch values from xml tag to comma seperated text file in unix 【发布时间】:2018-10-12 04:04:15 【问题描述】:我们有一个 xml 文件,它由机器上运行的不同进程的 xml 标签组成。我想获取所有进程的名称以及它的启动、停止命令,并将其保存为每个进程的逗号分隔。
文件中标签之一的示例如下:-
Bla Bla Bla
12参数>
开始>
停止>
PROCESS12参数>
搜索条件>
用户>
过程>
*
我想在文本文件中输出如下:-
匿名,STARTPROCESS 12,STOPPROCESS,SREACH12 PROCESS12
请注意文件中有多个这样的标签,所以我希望它们都和上面一样。 shell中的东西也可以工作。请帮忙。
【问题讨论】:
【参考方案1】:重新使用。
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
【讨论】:
感谢您的帮助。但在上面的例子中,我只给出了一个标签,并且我在 xml 文件中有多个标签,例如上面的标签。所以,我需要从 xml 文件中获取所有详细信息。 您可以通过类似的方式从其他标签获取数据。只需为每个 re.match() 相应地更改前导和尾随匹配参数。您可能需要对每个 pName 的命令和参数进行递归检查。以上是关于从 xml 标签获取值到 unix 中的逗号分隔文本文件的主要内容,如果未能解决你的问题,请参考以下文章
每个逗号分隔的 CSV 值到 PhpMyadmin 中的新行
Vue Bootstrap字符串逗号与textarea分隔的数组?