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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

答案

经过一番搜索后,我找到了答案并将其留在别人身上

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

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

这里bookstore / book是节点的完整路径,其中包含作者[author = value]用于选择只有作者具有特定值的节点而books.xml是你的xml文件

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

以上是关于xmlstarlet不能用于基于子字符串值的简单选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 plist 文件中如何通过 xmlstarlet 工具在唯一键标记后提取字符串文本

基于日期时间值的相同表上的高效sql子查询

C# - 使用标记来识别值的子字符串总和

为啥 xmlstarlet 不选择所有节点?

xmlstarlet 默认命名空间

Vue父子组件通信之$emit(基于vue2.5,ES6)