代码之家  ›  专栏  ›  技术社区  ›  Solaris

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

  •  1
  • Solaris  · 技术社区  · 6 年前

    我正在处理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 回复  |  直到 6 年前
        1
  •  0
  •   Solaris    6 年前

    经过一番搜索,我找到了答案,并把它留给了其他人,却意外地发现了同样的答案

    要在xmlstarlet中按字段选择值,请使用

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

    这里书店/书籍是包含作者的节点的完整路径 [作者=值]仅用于选择作者具有特定值的节点 还有书。xml是您的xml文件

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