【问题标题】:xml read many values and echo them in shxml 读取许多值并在 sh 中回显它们
【发布时间】:2014-06-21 23:14:07
【问题描述】:

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

我用命令回应他们

#!/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

并显示在

我不能再使用以前的方法了,只能使用“while”之类的东西和 xml 命令来获取值吗? 谢谢!

【问题讨论】:

    标签: xml shell cgi sh xmllint


    【解决方案1】:

    这里最好的解决方案可能是xsltproc - XSLT 非常适合处理 XML:

    printf "$XML" | xsltproc firmActDescr.xslt -
    

    在 XSLT 文件中,使用 xsl:value-of 获取值,xsl:text 打印 something&lt;xsl:output method="text" omit-xml-declaration="yes" indent="no"/&gt; 打印纯文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2013-07-17
      • 2017-03-08
      • 2014-04-25
      相关资源
      最近更新 更多