Pesquisa e substituição de XML npp

Pesquisa e substituição de XML npp

Tenha em mente que sou novo em xml e npp.

Tenho um arquivo xml grande com vários milhares de registros e preciso alterar as linhas para que funcione em outro programa.

Fiz a maior parte da transformação no formato, mas agora encontrei um problema.

Como está meu xml agora:

</Value>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</Value>
</DPR>

e o que eu quero:

<DPR>
<name>C01</name>
<description>TEXT WITH VARYING NUBMER OF CHARACTERS FOR EACH LINE</description>
</DPR>

O problema é substituir </Value>por duas coisas diferentes, dependendo se estiver em uma série de suportes independentes. O segundo problema que tenho é substituir partes de uma linha e manter o resto - quando a parte que desejo manter tem um número diferente de caracteres para cada linha.

Toda ajuda é muito apreciada!

Responder1

Substituindo </Valuepor </DPR>quando existir sozinho na linha:

Encontre o que:^ *</Value>

Substituir com:</DPR>

Modo de pesquisa: expressão regular

Depois disso, não deve haver outras instâncias além </Value>daquelas que estão juntas com uma string, portanto, substituí-las deve ser trivial. Mas para completar...

Substituindo [somestringhere]</Value-> [somestringhere]</description>quando existe sozinho na linha:

Encontre o que:^(<description>.+?)</Value>

Substituir com:$1</description>

Modo de pesquisa: expressão regular

Acima ^representa o início da linha, *significa que o espaço em branco pode ou não existir, .+?significa quaisquer caracteres até a primeira ocorrência da string depois disso (veja aqui para mais informações sobre expressões regulares), e $1na string de substituição será substituída pela parte correspondente entre parênteses nos dados de origem.

Responder2

O mais fácil é usar expressões regulares em Perl:

perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt

informação relacionada