如何使用 PowerShell 修改/创建 XML 文件中的值?

如何使用 PowerShell 修改/创建 XML 文件中的值?

我想知道是否可以使用 PowerShell 修改/创建 XML 文件中的值。基本上我感兴趣的是:

  • 修改 XML 文件中的值,如果不存在则创建它们(即我需要搜索该项目,如果不存在则创建并修改该值)
  • 在同一个 XML 文件中处理不同的 XML 语法,例如:

语法 1:

<设置>
  <setting id="Location2" value="西班牙巴塞罗那"/>
  <setting id="Location2id" value="zmw:00000.1.08181"/>
</settings>

语法2:

<设置>
    <音乐播放器>
        <crossfade>0</crossfade>
        <queuebydefault>false</queuebydefault>
    </音乐播放器>
</settings>

语法 3:

<设置>
    <皮肤设置>
        <setting type="bool" name="skin.confluence.HomepageHideRecentlyAddedVideo">false</setting>
    </皮肤设置>
</settings>

任何帮助都将非常感激。

谢谢。

答案1

PowerShell 完全支持处理 XML 文件。

例如,如果我们将您提供的第一个简介粘贴到settings.xml文件夹“C:\blah”中名为 XML 的文件中,您就可以获得每个设置的 ID,如下所示:

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.setting.id

返回:

Location2
Location2id

$myXML.settings.setting.value

返回:

Barcelona, Spain
zmw:00000.1.08181

如果我们用您在语法#2中提供的简介替换XML文件内容:

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade

返回:

0

要读取crossfade,请将其更改为 2,然后保存回去:

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.musicplayer.crossfade = 2
$myXML.Save("C:\blah\settings.xml")

评论后编辑:

改变 XML 元素本身(如巴塞罗那的示例)有点棘手,因为您编辑的是 XML 结构本身,而不是它包含的数据。

[xml]$myXML = Get-Content C:\blah\settings.xml
$myXML.settings.ChildNodes.Item(0).value = "New York, USA"
$myXML.Save("C:\blah\settings.xml")

对于 Skinsettings 示例,请尝试类似以下操作:

$myXML.settings.skinsettings.setting."#text" = "true"

查看以下资源:

相关内容