XML npp procura e substitui

0

Tenha em mente que sou novo em xml e npp.

Eu tenho um arquivo xml grande com vários milhares de registros e preciso alterar as linhas para fazê-lo funcionar em outro programa.

Eu fiz a maior parte da transformação em formato, mas acertei um problema agora.

Como meu xml se parece 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 está substituindo </Value> por duas coisas diferentes, dependendo se estiver em uma sequência de colunas sozinho. O segundo problema que tenho é substituir partes de uma linha e manter o resto - quando a parte que quero manter tem um número diferente de caracteres para cada linha.

Toda ajuda é muito apreciada!

    
por Einar 01.10.2015 / 14:48

2 respostas

0

Substituindo </Value por </DPR> quando existe sozinho na linha:

Encontre o que: ^ *</Value>

Substitua por: </DPR>

Modo de pesquisa: expressão regular

Depois disso, não deve haver nenhuma outra instância de </Value> do que aquelas que estão juntas com uma string, então substituí-las deve ser trivial. Mas para completar ...

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

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

Substitua por: $1</description>

Modo de pesquisa: expressão regular

No acima, ^ significa o início da linha, * significa que espaço em branco pode ou não existir, .+? significa qualquer caractere até a primeira ocorrência da sequência depois disso (consulte aqui mais informações sobre expressões regulares ) e $1 na cadeia de substituição será substituído pela parte correspondente entre parênteses os dados de origem.

    
por 01.10.2015 / 15:11
0

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

perl -i -p -e 's/</Value>\n<name>/<DPR>\n<name>/' yourfile.txt
    
por 01.10.2015 / 16:18