Como fazer o complexo Localizar e substituir (excluir) vários arquivos?

1

Meu problema não é apenas fazer isso em vários arquivos, mas é também que a complexidade do que preciso encontrar é bastante complicada. Depois de atualizar a versão .NET do meu aplicativo, algumas partes de alguns arquivos de recursos foram duplicadas, para tudo, exceto o número da versão do assembly que foi incrementado.

Aqui está um arquivo de recurso de exemplo, que deve demonstrar meu problema:

<data attribute="value" >
    <value>Version="dot_net_4_assembly_version_number", <!--This element is fine--></value>
</data>

<data attribute="anotherValue" >
    <value>Version="dot_net_2_assembly_version_number", "identical_data_here"</value>
</data>

<data attribute="anotherValue" >
    <value>Version="dot_net_4_assembly_version_number", "identical_data_here"</value>
</data>

Então, eu precisaria de algum tipo de ferramenta, algum script de comando ou algo assim (se isso for possível) que pesquisará cada arquivo e identificará se todos os valores em elementos xml são iguais, exceto o Version=... Os números correspondem às versões .NET 2 e 4 e, em seguida, removem a versão .NET 2 do elemento xml.

Como conseguir isso? Algum tipo de script bash-command seria necessário para fazer isso? (Além disso, espero que eu esteja fazendo esta pergunta no lugar certo, deixe-me saber se eu não sou)

    
por Danny Goodall 09.01.2017 / 12:23

1 resposta

0

Você pode fazer ações de localizar e substituir bastante complexas com expressões regulares e (por exemplo) o Notepad ++. No entanto, isso pode não ser viável quando o arquivo que você está tentando alterar não tem itens salvos da mesma maneira.

Pessoalmente, como o arquivo é XML, eu simplesmente usaria um ambiente de programação, como o que você está acostumado, para escrever um problema para ler e gravar os arquivos XML. Isso pode ser provavelmente muito mais fácil do que escrever uma expressão regular complexa.

Como alternativa, você poderia usar XML- > XSLT para ler os arquivos e transformá-los, mas eu escolheria a opção com a qual estou mais familiarizado.

    
por 09.01.2017 / 13:52