使用 xmlstarlet 编辑 XML 中的值

Editing Values in XML using xmlstarlet

我是 xmlstarlet 的新手,因为我没有使用 bash。

我尝试一次替换 XML 文件中的许多值。

我试过的是:

xmlstarlet ed -L -u "/items/item/property[@name='Stacknumber']/@value" -v '30000' items.xml

<items>    
   <item name="foodEggBoiled">
      <property name="Stacknumber" value="50"/> <!-- This i want to change-->
    </item>
    <item name="foodEggRaw">
      <property name="Stacknumber" value="1"/> <!-- and this not-->
    </item>
</items>

我要更改的值是

<property name="Stacknumber" value="50"/>

我想将 属性 Stacknumber 中值大于 1 的每个值更改为 30000,例如

<property name="Stacknumber" value="30000"/>

但我不知道如何 select 仅使用值大于 1 的属性。

有效XML:

xmlstarlet edit --omit-decl --update '//property[@name="Stacknumber"][@value>"1"]/@value' -v '30000' file.xml

如果要就地编辑文件,请添加选项 -L。

输出:

<items>
  <item name="foodEggBoiled">
    <property name="Stacknumber" value="30000"/>
    <!-- This i want to change-->
  </item>
  <item name="foodEggRaw">
    <property name="Stacknumber" value="1"/>
    <!-- and this not-->
  </item>
</items>