xml - 使用Powershell将XML元素添加到复杂的XML文件中

标签 xml powershell updates

对于Powershell来说,在我的远程工作中有一项非常复杂的任务。很难解释,但我会尝试。
我有结构复杂的XML文件(该文件具有Visual Studio的设置):

<UserSettings>
<ToolsOptions>
<ToolsOptionsCategory RegisteredName="Environment" name="Environment">
</ToolsOptionsCategory>
</ToolsOptions>
</UserSettings>

任务添加到子节点下的“ToolsOptionsCategory”部分:
<ToolsOptionsSubCategory PackageName="VS Setup Composition" RegisteredName="ProductUpdates" name="ProductUpdates">
<PropertyValue name="IsBackground">true</PropertyValue>
</ToolsOptionsSubCategory>

我尝试使用AppendChild和CreateElement,但是我不知道如何添加“PackageName”和“RegistereName”等属性。目标文件中没有该子节点,我需要添加它。
如果您能帮助我并给我指路,我将很棒。

先感谢您!保持健康,待在家里:)

最佳答案

对于演示,我使用Here-String

[xml]$xml = @"
<UserSettings>
<ToolsOptions>
<ToolsOptionsCategory RegisteredName="Environment" name="Environment">
</ToolsOptionsCategory>
</ToolsOptions>
</UserSettings>
"@

在现实生活中,您将使用[xml]$xml = Get-Content -Path 'D:\config.xml'从文件中加载它
$node = $xml.UserSettings.ToolsOptions.ToolsOptionsCategory
# update the attributes for this node
$node.SetAttribute("PackageName", "VS Setup Composition")
$node.SetAttribute("RegisteredName", "ProductUpdates")
$node.SetAttribute("name", "ProductUpdates")
# create the new sub node (XmlElement)
$newNode = $xml.CreateElement("PropertyValue")
$newNode.SetAttribute("name", "IsBackground")
$newNode.InnerText = "true"
# add this new subnode to the 'ToolsOptionsCategory' node
$node.AppendChild($newNode)

$xml.Save('D:\newConfig.xml')

结果:
<UserSettings>
  <ToolsOptions>
    <ToolsOptionsCategory RegisteredName="ProductUpdates" name="ProductUpdates" PackageName="VS Setup Composition">
      <PropertyValue name="IsBackground">true</PropertyValue>
    </ToolsOptionsCategory>
  </ToolsOptions>
</UserSettings>

关于xml - 使用Powershell将XML元素添加到复杂的XML文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61043643/

相关文章:

visual-studio - Visual Studio - 构建后事件 - 抛出错误

powershell - 仅在嵌套循环中跳出内循环

file - 更新以前的安装设置

notifications - 如何将 VSCode 更新通知与 apt update 绑定(bind)?

javascript - 跨浏览器 Javascript XML 解析

c# - 读/写和访问设置的最佳实践(不使用 Windows 设置)

java - Java读写XML数据文件报错"Premature end of file"

node.js - 如何在 package.json 的脚本中运行多个 powershell 命令

java - 将大字符串流式传输到 JAXB 中

python - scipy.sparse 矩阵 : subtract row mean to nonzero elements