Редактирование значений в XML с использованием xmlstarlet - PullRequest
0 голосов
/ 01 декабря 2018

Я новичок в использовании 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"/>

Но я нене знаю, как выбрать только свойства со значениями выше 1.

1 Ответ

0 голосов
/ 01 декабря 2018

С допустимым 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>
...