【问题标题】:Extract all values from XML ELEMENT tree using shell使用 shell 从 XML ELEMENT 树中提取所有值
【发布时间】:2023-01-10 19:52:52
【问题描述】:

我有一个如下所示的 xml 文件,如果 Element 以 STOCK 开头,则必须提取所有 TAG 值并将其存储在一个变量中。请不要提供 xmlstarlet 解决方案,因为我们没有它。

<?xml version="1.0" encoding="utf-8"?>
<stock>
<resources>

   <item id="CAR001">
        <label>CARS</label>
        <value>25000</value>
        <description>in stock</description>
   </item>
   <item id="bike002">
        <label>bikes</label>
        <value>10000</value>
        <description>ready</description>
   </item>
 </resources>
</stock>

所以从上面我期望提取值并将其存储在变量中:

CAR001
CARS
25000
in stock
bike002
bikes
10000
ready

【问题讨论】:

  • 如果您坚持使用 shell 脚本解决此类问题,xmlstarlet 确实是您的最佳选择。 “我们没有”是什么意思?它是任何人都可以使用的开源软件。
  • 您不想使用 XML 工具?您的预期输出就像 XPath 查询(甚至 1.0)会返回的一样......
  • 什么是“将值存储在变量中“意思是?如果你碰巧得到预期的输出,你能展示它的代码吗?

标签: bash shell


【解决方案1】:

像这样:

$ xidel -e '//*/text() | //@id' -s file.xml | grep -v '^$'

或者

$ xmlstarlet sel -t -v  '//*/text() | //@id' file.xml | grep -v '^ *$'

输出

CAR001
CARS
25000
in stock
bike002
bikes
10000
ready

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多