Как добавить или добавить атрибут в файл XML с помощью xmlstarlet или аналогичного?

Не видел в документах. Вот что я пытаюсь сделать:

echo "<foo><bar t='A' /><bar t='B' /></foo>" | xmlstarlet ed -u "//bar/@t" -v "1_[//bar/@t]"

Я хочу предварительно добавить префикс 1_ к т.

Ожидаемый результат:

<?xml version="1.0"?>
<foo>
  <bar t="1_A"/>
  <bar t="1_B"/>
</foo>

Фактический выход:

<?xml version="1.0"?>
<foo>
  <bar t="1_[//bar/@t]"/>
  <bar t="1_[//bar/@t]"/>
</foo>

1 ответ

Решение

Попробуй это:

 echo "<foo><bar t='A' /><bar t='B' /></foo>" | \
      xmlstarlet ed -u "//bar/@t" -x 'concat("1_", .)'

-v для фиксированных значений, -x для выражений xpath.

Другие вопросы по тегам