使用XMLStarlet删除属性

Cha*_*les 2 xpath xmlstarlet

我有一个XML文档,我想使用XMLStarlet从所有元素(或给定类型的所有元素)中删除某种类型的所有属性及其值,而不会干扰其他属性.

例如,我想bad从任何a元素中删除所有属性:

<root>
  <a href="." bad="yes"/>
  <a bad=""/>
</root>
Run Code Online (Sandbox Code Playgroud)

<root>
  <a href="."/>
  <a/>
</root>
Run Code Online (Sandbox Code Playgroud)

npo*_*avs 8

XMLStarlet的ed子命令有一个--delete-d选项.

bada元素中删除属性:

xmlstarlet ed -d '//a/@bad' input.xml
Run Code Online (Sandbox Code Playgroud)

删除所有bad属性:

xmlstarlet ed -d '//@bad' input.xml
Run Code Online (Sandbox Code Playgroud)