A substituição de uma string em um XML por Powershell faz com que o MALFORMED XML

3

Eu tenho um arquivo XML bastante grande que preciso substituir algumas cadeias de conexão.

Eu uso o seguinte código para substituir as strings:

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | out-file .\bigxmlfile.xml -force

Isso muda as strings bem, mas por algum motivo SEMPRE acaba quebrando o XML. Estou tendo problemas para descobrir o porquê.

    
por JustAGuy 28.10.2014 / 08:37

3 respostas

3

Out-File está gravando um arquivo Unicode por padrão. Use -Encoding para corrigir:

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | out-file .\bigxmlfile.xml -force -encoding ascii

Como alternativa, use Set-Content :

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | set-content .\bigxmlfile.xml -force
    
por 28.10.2014 / 14:00
1

Se você processar XML usando ferramentas que não sejam XML, você sempre correrá esse risco. Se você quiser fazer uma transformação em XML, a melhor ferramenta para o trabalho é a linguagem de transformação XML, XSLT.

    
por 28.10.2014 / 14:13
0

Você já tentou usar o Import-CLIXML em vez de Get-Content?
Eu não sei o quão bem ele lida com arquivos xml grandes ou complexos, mas vale a pena tentar.

    
por 29.10.2014 / 09:44