如何使用shellscript解析xml开始标签到结束标签?

如何使用shellscript解析xml开始标签到结束标签?

我有如下所示的 XML 文件,名为sample.xml

<m:properties>
<d:>ABCD</d:>
<d:>1234</d:>
<d:>0048</d:>
<d:>0.0</d:>
</m:properties>
<m:properties>
<d:>EFGH</d:>
<d:>5678</d:>
<d:>1111</d:>
<d:>9.0</d:>
</m:properties>

所需的输出是:

ABCD,1234,0048,0.0
EFGH,5678,1111,9.0

谁能帮我创建脚本吗?

答案1

假设 XML 包含在名为 的单个根标记中,root使用类似的宽容 XML 解析器xq(来自yqhttps://kislyuk.github.io/yq/) 创建 CSV:

xq -r '.root."m:properties"[]."d:" | @csv' sample.xml

如果没有这样的封闭标签,那么我们可以动态添加一个:

{
  echo '<root>'
  cat sample.xml
  echo '</root>'
} | xq -r '.root."m:properties"[]."d:" | @csv'

结果:

"ABCD","1234","0048","0.0"
"EFGH","5678","1111","9.0"

相关内容