Você não especificou que só pode usar sed
, portanto, se tiver acesso a xml_grep
(consulte Mesclar vários arquivos XML da linha commend , segunda resposta), eu recomendaria isso porque ele faz muito do trabalho pesado para você e para um trabalho simples de mesclagem como este pode ser feito em um comando:
xml_grep --cond Record --wrap "ns0:collection" --descr 'xmlns:ns0="http://namespace/Service/1.0"' --encoding "UTF-8" *.xml
Arquivos de teste:
test.xml
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namespace/Service/1.0""><Record>
Test
</Record></ns0:collection>
test1.xml
<?xml version="1.0" encoding="UTF-8" ?><ns0:collection
xmlns:ns0="http://namespace/Service/1.0"><Record>
Test 1<a>a</a><b c="c">d</b>
</Record></ns0:collection>
Resultado
<?xml version="1.0" encoding="UTF-8" ?>
<ns0:collection xmlns:ns0="http://namespace/Service/1.0">
<Record>
Test 1<a>a</a><b c="c">d</b></Record><Record>
Test
</Record>
</ns0:collection>
Eu prefiro usar ferramentas com reconhecimento de XML ao lidar com arquivos XML, porque a chance de atrapalhar a estrutura com sed
e amigos é bastante alta e você pode facilmente acabar com um documento XML malformado!