如何使用xmlstarlet或类似方法在xml文件中追加或添加属性?

时间:2016-06-08 23:05:58

标签: xml linux xpath xmlstarlet

在文档中没有看到它。这就是我想要做的事情:

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

我想将前缀1_预先附加到t。

预期产出:

<?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 个答案:

答案 0 :(得分:1)

试试这个:

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

-v用于固定值,-x用于xpath表达式。