如何更改xml中的xml:lang属性值?

时间:2018-05-17 13:40:08

标签: powershell

我是Powershell的新手,我基本上用它来操作多个xml文件来完成我的工作任务。我使用基于xml的专有文件,这意味着它们有自己的扩展,但基本上都是xml。如果您能帮助我弄清楚如何使用ps1脚本更改以下示例中的'xml:lang'属性的值,我将不胜感激。假设我有多个带有* .flprj扩展名的文件,它们都共享以下内容:

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

我想要实现的是在包含来自'en-gb'的* .flprj文件的所有子文件夹中递归地更改xml:lang属性的值,让我们说'nl-nl'。我想出了如何通过替换字符串来实现这一点,但我宁愿替换值,因为源语言可能会有所不同。我非常感谢你的建议。

1 个答案:

答案 0 :(得分:0)

这是一个让你前进的例子。可能需要根据您的xml(多个lang值,位置++)进行调整。

  1. 查找所有flprj文件
  2. 阅读它们并转换为XMLDocument
  3. 如果CatapultProject.lang等于'en-gb',请修改并保存
  4. 例如:

    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)
        }
    }