使用 xmlstarlet 更新 xml 元素中确实存在的属性
Update attribute that does exist in xml element with 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 命令是什么?
在 XPath 中,用 @
表示的属性名称必须由元素中的斜杠 /
分隔。
所以不用
--update "x:widget@id"
使用
--update "x:widget/@id"
我有一个 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 命令是什么?
在 XPath 中,用 @
表示的属性名称必须由元素中的斜杠 /
分隔。
所以不用
--update "x:widget@id"
使用
--update "x:widget/@id"