使用xmlstarlet提取节点值

时间:2014-06-02 15:27:26

标签: xmlstarlet

我有这个xml架构,我想要的是如何在shell脚本中使用XMLStarlet逐个提取所有节点的值

     <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>

2 个答案:

答案 0 :(得分:6)

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(您想要的节点名称)&#34;
  • -v(请求当前路径中元素的值),.表示迭代中的当前元素(您可以将节点的名称放在那里,但它通常更容易这条路)
  • -n是为您匹配的每个值添加一行。

答案 1 :(得分:0)

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

imagescroller=`xmlstarlet sel -t -m "//root/services/service/imageScroll[rank_of_the_desired_item]" -v imageName -n myfile.xml
抱歉,迟到了。