使用xmlstarlet根据匹配字符串删除xml节点?

使用xmlstarlet根据匹配字符串删除xml节点?,xml,xmlstarlet,Xml,Xmlstarlet,我正在尝试删除和之间的所有内容,如果其中包含短语“像素完美”我在删除基于匹配单个标记的整个块时遇到了麻烦 将删除第一个…,但不会删除第二个,因为它与父块中的特定xml标记不匹配。使用xmlstarlet有什么快速修复方法吗 <AdditionalApplication> <Id>63463edb-28fa-4029-9405-1360b9eb092a</Id> <PlayCount>0</PlayCount> <Gam

我正在尝试删除
之间的所有内容,如果其中包含短语“像素完美”我在删除基于匹配单个标记的整个块时遇到了麻烦

将删除第一个
,但不会删除第二个,因为它与父块中的特定xml标记不匹配。使用xmlstarlet有什么快速修复方法吗

<AdditionalApplication>
  <Id>63463edb-28fa-4029-9405-1360b9eb092a</Id>
  <PlayCount>0</PlayCount>
  <GameID>1b9277aa-4c31-467b-bcad-3cbca7589d08</GameID>
  <ApplicationPath>eXo\eXoDOS\!dos\themist\Extras\Alternate Launcher.bat</ApplicationPath>
  <AutoRunAfter>false</AutoRunAfter>
  <AutoRunBefore>false</AutoRunBefore>
  <Name>Pixel Perfect &amp; Shader Options</Name>  // BECAUSE THIS LINE MATCHES, Remove entire <AdditionalApplication> ... </AdditionalApplication> block
  <UseDosBox>false</UseDosBox>
  <UseEmulator>false</UslaeEmutor>
  <WaitForExit>false</WaitForExit>
  <SideA>false</SideA>
  <SideB>false</SideB>
  <Priority>0</Priority>
</AdditionalApplication>

<AdditionalApplication>
  <Id>f1dd929c-3d1a-461a-a943-3e7ad99e4426</Id>
  <PlayCount>0</PlayCount>
  <GameID>1b9277aa-4c31-467b-bcad-3cbca7589d08</GameID>
  <ApplicationPath>eXo\eXoDOS\!dos\themist\Extras\mist-refcard.pdf</ApplicationPath>
  <AutoRunAfter>false</AutoRunAfter>
  <AutoRunBefore>false</AutoRunBefore>
  <CommandLine />
  <Name>Reference Card</Name>
  <UseDosBox>false</UseDosBox>
  <UseEmulator>false</UseEmulator>
  <WaitForExit>false</WaitForExit>
  <Developer />
  <Publisher />
  <Region />
  <Version />
  <Status />
  <SideA>false</SideA>
  <SideB>false</SideB>
  <Priority>0</Priority>
</AdditionalApplication>

63463edb-28fa-4029-9405-1360b9eb092a
0
1b9277aa-4c31-467b-bcad-3cbca7589d08
eXo\eXoDOS\!dos\themist\Extras\Alternate Launcher.bat
假的
假的
像素完美&;着色器选项//由于此行匹配,请删除整个。。。块
假的
假的
假的
假的
假的
0
f1dd929c-3d1a-461a-a943-3e7ad99e4426
0
1b9277aa-4c31-467b-bcad-3cbca7589d08
eXo\eXoDOS\!dos\themist\Extras\mist-refcard.pdf
假的
假的
参考卡
假的
假的
假的
假的
假的
0

我认为以下几点可以让你达到目的:

xml ed -d  '//AdditionalApplication[.//Name[contains(text(),"Pixel Perfect")]]'  myfile.xml
“像素完美”是否总是节点“名称”的一部分?