使用xmlstarlet更新xml元素中存在的属性

时间:2018-05-24 16:02:24

标签: xml xmlstarlet

我有一个以

开头的xml文件
<?xml version='1.0' encoding='utf-8'?>
<widget 
  id="io.ionic.starter" 
  version="0.0.1" 
  xmlns="http://www.w3.org/ns/widgets" 
  xmlns:cdv="http://cordova.apache.org/ns/1.0"
>

我需要更改id属性的值,使它看起来像这样:

<?xml version='1.0' encoding='utf-8'?>
<widget 
  id="sdf" 
  version="0.0.1" 
  xmlns="http://www.w3.org/ns/widgets" 
  xmlns:cdv="http://cordova.apache.org/ns/1.0"
>

我已尝试使用xmlstarlet:

xmlstarlet edit \
  --inplace \
  -O \
  -N \
  x=http://www.w3.org/ns/widgets \
  --update "x:widget@id" \
  --value "sdf" \
  config.xml

但我得到Invalid expression: x:widget@id。这里正确的xmlstarlet命令是什么?

1 个答案:

答案 0 :(得分:1)

在XPath中,用@表示的属性名称必须用元素中的斜杠/分隔。

所以而不是

--update "x:widget@id"

使用

--update "x:widget/@id"