我有这个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 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
是为您匹配的每个值添加一行。这就是我找到的解决方案,它完美地完成了工作。
imagescroller=`xmlstarlet sel -t -m "//root/services/service/imageScroll[rank_of_the_desired_item]" -v imageName -n myfile.xml
抱歉来晚了。