从 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

$PROCESS_LOG

STARTPROCESS

12参数>

开始>

STOPPROCESS

停止>

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 中的新行

SQL 从 XML 中获取列的逗号分隔值

Vue Bootstrap字符串逗号与textarea分隔的数组?

使用 XSLT 程序对具有逗号分隔值的 XML 元素进行分组

从逗号分隔的订单ID中获取有效的WooCommerce订阅

从解析列中获取值到标签中