xml读取许多值并在sh中回显它们

时间:2014-06-21 23:14:08

标签: xml shell cgi sh xmllint

我有一个名为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!

1 个答案:

答案 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"/>以打印纯文本。