Как добавить или добавить атрибут в файл 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.