Удалить xml элементов с несколькими критериями в xmlstarlet - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь написать сценарий 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>

1 Ответ

0 голосов
/ 07 апреля 2020

Если вы используете xmlstarlet, попробуйте:

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