我有一个名为XML的xml VARIABLE,如下所示:
<m:RgWsPublicFirmActRtUser>
<m:firmActDescr>TEXT</m:firmActDescr>
<m:firmActKind>2</m:firmActKind>
<m:firmActKindDescr>TEXT</m:firmActKindDescr>
<m:firmActCode>47191000</m:firmActCode>
</m:RgWsPublicFirmActRtUser>
我用命令
回应它们#!/bin/sh
echo $XML | grep -o -P '(?<=<m:firmActDescr>).*(?=</m:firmActDescr>)'
echo "something"
我得到了
TEXT
something
但现在我有多个值相同,xml现在是这样的:
<m:RgWsPublicFirmActRtUser>
<m:firmActDescr>TEXT</m:firmActDescr>
<m:firmActKind>2</m:firmActKind>
<m:firmActKindDescr>TEXT</m:firmActKindDescr>
<m:firmActCode>47191000</m:firmActCode>
</m:RgWsPublicFirmActRtUser>
<m:RgWsPublicFirmActRtUser>
<m:firmActDescr>TEXT2</m:firmActDescr>
<m:firmActKind>3</m:firmActKind>
<m:firmActKindDescr>TEXT2</m:firmActKindDescr>
<m:firmActCode>47191000</m:firmActCode>
</m:RgWsPublicFirmActRtUser>
还有TEXT3等等。
我如何让我的节目显示:
TEXT1
something
TEXT2
something
TEXT3
something
并在
上显示我不能再使用以前的方法,meaby使用类似&#34;而#34;和一个xml命令来获取值? THX!
答案 0 :(得分:1)
这里最好的解决方案可能是xsltproc
- XSLT非常适合处理XML:
printf "$XML" | xsltproc firmActDescr.xslt -
在XSLT文件中,使用xsl:value-of
获取值xsl:text
以打印something
和<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
以打印纯文本。