使用 xmlstarlet 提取节点值

问题描述 投票:0回答:2

我有这个XML模式,我想要的是如何在shell脚本中使用XMLStarlet一一提取所有

<imageName>
节点的值

     <service>
        <imageScroll>
           <imageName>Photo_Gallerie_1.jpg</imageName>
        </imageScroll>
        <imageScroll>
           <imageName>Photo_Gallerie_2.jpg</imageName>
        </imageScroll>
        <imageScroll>
           <imageName>Photo_Gallerie_3.jpg</imageName>
        </imageScroll>
      </service>
xmlstarlet
2个回答
15
投票
xmlstarlet sel -t -m "//imageName" -v . -n your.xml

输出:

Photo_Gallerie_1.jpg
Photo_Gallerie_2.jpg
Photo_Gallerie_3.jpg

这是您需要的吗?

  • sel
    (选择模式)
  • -t
    (输出模板(这几乎是必需的)
  • -m
    对于以下值的每场比赛
    • "//
      (双斜杠意味着它可以位于树中的任何位置)
    • imageName
      (您想要的节点名称)”
  • -v
    (请求当前路径中元素的值),
    .
    表示迭代中的当前元素(您可以将节点的名称放在那里,但这种方式通常更容易) 然后
  • -n
    是为您匹配的每个值添加一行。

0
投票

这就是我找到的解决方案,它完美地完成了工作。

imagescroller=`xmlstarlet sel -t -m "//root/services/service/imageScroll[rank_of_the_desired_item]" -v imageName -n myfile.xml

抱歉来晚了。

© www.soinside.com 2019 - 2024. All rights reserved.