Замена строки в XML с Powershell вызывает УРОДЛИВЫЙ XML

У меня есть довольно большой XML-файл, в котором я должен заменить некоторые строки подключения.

Я использую следующий код для замены строк:

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

Это меняет струны очень хорошо, но по некоторым причинам ВСЕГДА заканчивает тем, что повредило XML. Я испытываю затруднения при выяснении почему.

3
задан 28 October 2014 в 09:37
3 ответа

Out-File по умолчанию записывает файл Unicode. Используйте -Encoding , чтобы исправить это:

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

В качестве альтернативы используйте Set-Content :

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | set-content .\bigxmlfile.xml -force
3
ответ дан 3 December 2019 в 06:06

Если вы обрабатываете XML с помощью инструментов, не поддерживающих XML, вы всегда будете подвергаться этому риску. Если вы хотите выполнить преобразование в XML, лучшим инструментом для этой работы является язык преобразования XML, XSLT.

1
ответ дан 3 December 2019 в 06:06

Вы пробовали использовать Import-CLIXML вместо Get-Content?
Я не знаю, насколько хорошо он обрабатывает большие или сложные файлы xml, но попробовать стоит.

0
ответ дан 3 December 2019 в 06:06

Теги

Похожие вопросы