在 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
我正在尝试编写 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