Supondo que seu documento XML esteja bem formado, como
<document>
<HDR>
</HDR>
<b>
</b>
<c>
</c>
</document>
Em seguida, você pode usar o XMLStarlet para remover todas as tags HDR
da seguinte forma:
xmlstarlet ed -d '//HDR' file.xml >newfile.xml
Para remover apenas as tags HDR
que são imediatamente seguidas por uma tag b
:
xmlstarlet ed -d '//HDR[following-sibling::*[1][name() = "b"]]' file.xml >newfile.xml
XMLStarlet também pode ser usado para modificar o conteúdo das tags:
$ xmlstarlet ed -u '//HDR[following-sibling::*[1][name() = "b"]]' -v 'New header value' file.xml
<?xml version="1.0"?>
<document>
<HDR>New header value</HDR>
<b/>
<c/>
</document>
$ xmlstarlet ed -i '//HDR[following-sibling::*[1][name() = "b"]]' -t attr -n 'new_attribute' -v 'hello' file.xml
<?xml version="1.0"?>
<document>
<HDR new_attribute="hello"/>
<b/>
<c/>
</document>