xmlstarlet不适用于基于子字符串值的简单选择

时间:2017-12-22 11:08:23

标签: xml xml-parsing xmlstarlet

我正在处理像

这样的XML文件
<bookstore> 
   <book category="cooking"> 
       <title lang="en">Everyday Italian</title> 
       <author>adc</author> 
       <year>2005</year> 
       <price>30.00</price> </book> 
   <book category="children"> 
       <title lang="en">Harry Potter</title> 
       <author>xyz</author> 
       <year>2005</year> 
       <price>29.99</price> </book> 
</bookstore>

在linux上使用xmlstarlet

xmlstarlet sel -t -m 'bookstore/author [1]' -n books.xml 

将输出设为"adc",但如果我已知道该值,我该如何找到该字段?

就像我知道作者标签的值为"adc"。 我应该如何找到bookstore/author [x] x

1 个答案:

答案 0 :(得分:0)

经过一番搜索后,我找到了答案,并将其留在了其他人身上,偶然发现了

要在xmlstarlet中按字段选择值

xmlstarlet -t -c 'bookstore/book[author="adc"]' -n books.xml

这里书店/书是包含作者的节点的完整路径 [author = value]用于仅选择作者具有特定值的节点 books.xml是你的xml文件

我相信其他人可以更好地解释,但希望你能找到一些帮助