gpt4 book ai didi

xml - 如何过滤 XMLStarlet 中的多个属性?

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:04 27 4
gpt4 key购买 nike

例如,给定:

<fruit>
<banana source='Ecuador' category='I'>
<quantity>1</quantity>
</banana>
<banana source='Costa Rica' category='I'>
<quantity>1</quantity>
</banana>
</fruit>

说我要改变

<banana source='Costa Rica' category='I'> 

<banana source='Costa Rica' category='II'> 

或者它的数量为 2,如果我想同时过滤源和初始类别值,我将如何引用它?


我正在尝试执行以下操作:

xmlstarlet ed -u "/fruit/banana[@source='Ecuador' @category='I']/quantity" -v 2

...但这会导致语法错误,如下所示:

Invalid predicate: /fruit/banana[@source='Ecuador' @category='I']/quantity
Invalid expression: /fruit/banana[@source='Ecuador' @category='I']/quantity

最佳答案

经过反复试验,得出了解决方案:

我需要使用下一个属性关闭并重新打开 []。例如:

xmlstarlet ed -u "/fruit/banana[@source='Ecuador'][@category='I']/quantity" -v 2 example.xml

并且会正确输出:

<?xml version="1.0"?>
<fruit>
<banana source="Ecuador" category="I">
<quantity>2</quantity>
</banana>
<banana source="Costa Rica" category="I">
<quantity>1</quantity>
</banana>
</fruit>

编辑:也有效:

xmlstarlet ed -u "/fruit/banana[@source='Ecuador' and @category='I']/quantity" -v 2 example.xml

关于xml - 如何过滤 XMLStarlet 中的多个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38473360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com