在 xmlstarlet 中删除具有多个条件的 xml 个元素

Delete xml elements with multiple criteria in xmlstarlet

我正在尝试编写 bash 脚本来删除具有多个条件的 xml 元素。

例如:

<a>
 <b>
  <name>x</name>
  <age>15</age>
  <group>maths</group>
  <grade>A</grade>
 </b>
 <b>
  <name>x</name>
  <age>14</age>
  <group>maths</group>
  <grade>B</grade>
 </b>
 <b>
  <name>y</name>
  <age>15</age>
  <group>maths</group>
  <grade>C</grade>
 </b>
</a>

这里我需要删除 xml 具有值 name = x 和 age = 15

的元素

预期输出:

<a>
 <b>
  <name>x</name>
  <age>14</age>
  <group>maths</group>
  <grade>B</grade>
 </b>
 <b>
  <name>y</name>
  <age>15</age>
  <group>maths</group>
  <grade>C</grade>
 </b>
</a>

应删除以下元素。

 <b>
  <name>x</name>
  <age>15</age>
  <group>maths</group>
  <grade>A</grade>
 </b>

如果您使用的是 xmlstarlet,请尝试:

xmlstarlet ed -d '//b[name="x"][age="15"]' file.xml