我有这个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>
答案 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
抱歉,迟到了。