Как изменить значение атрибута xml: lang в xml? - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в Powershell, я в основном использую его для манипулирования несколькими XML-файлами для своих рабочих заданий. Я работаю с проприетарными файлами на основе xml, то есть они имеют свои собственные расширения, но в основном это xml. Я был бы признателен, если бы вы могли помочь мне понять, как вы можете изменить значение атрибута 'xml: lang' в приведенном ниже примере с помощью скрипта ps1. Давайте предположим, что у меня есть несколько файлов с расширением * .flprj, и все они имеют следующее содержимое:

<?xml version="1.0" encoding="utf-8"?>
<CatapultProject Version="1" xml:lang="en-gb" />

Я хотел бы добиться рекурсивного изменения значения атрибута xml: lang во всех подпапках, содержащих файлы * .flprj, с 'en-gb', скажем, на 'nl-nl'. Я понял, как этого добиться, заменив строки, но я бы предпочел заменить значение, так как исходные языки могут отличаться. Буду очень признателен за ваши предложения.

1 Ответ

0 голосов
/ 17 мая 2018

Вот пример, чтобы вы пошли.Возможно, придется изменить его в зависимости от вашего xml (несколько значений lang, местоположения ++).

  1. Найти все flprj-файлы
  2. Прочитать их и преобразовать в XMLDocument
  3. Если CatapultProject.lang равен 'en-gb', измените и сохраните

Пример:

Get-ChildItem -Path "C:\Folder\" -Filter "*.flprj" -Recurse | Foreach-Object { 
    $xml = [xml](Get-Content $_.FullName)
    if($xml.CatapultProject.lang -eq 'en-gb') {
        $xml.CatapultProject.lang = "nl-nl"
        $xml.Save($_.FullName)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...