You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell实现多级XML内容插入:批量添加dependency与prerequisite元素

PowerShell XML依赖节点批量插入方案

完整可运行代码

function Update-XmlDependencies {
    param(
        # 输入XML文件路径
        [Parameter(Mandatory=$true)]
        [string]$InputXmlPath,
        # 输出XML文件路径
        [Parameter(Mandatory=$true)]
        [string]$OutputXmlPath,
        # 需插入的dependencies子节点集合,每个元素为包含Id、Version属性的对象
        [Parameter(Mandatory=$true)]
        [PSObject[]]$Dependencies,
        # 需插入的prerequisites子节点集合,每个元素为包含Id、Version属性的对象
        [Parameter(Mandatory=$true)]
        [PSObject[]]$Prerequisites
    )

    # 加载XML文件,指定UTF8编码避免乱码
    $xmlContent = Get-Content -Path $InputXmlPath -Raw -Encoding UTF8
    [xml]$xmlDoc = $xmlContent

    # 定位原始XML中已存在的父节点
    $dependenciesParent = $xmlDoc.SelectSingleNode('//metadata/dependencies')
    $prerequisitesParent = $xmlDoc.SelectSingleNode('//metadata/prerequisites')

    # 批量插入dependencies子节点
    foreach ($dep in $Dependencies) {
        $newDepNode = $xmlDoc.CreateNode('element', 'dependency', '')
        $newDepNode.SetAttribute('id', $dep.Id)
        $newDepNode.SetAttribute('version', $dep.Version)
        $dependenciesParent.AppendChild($newDepNode) | Out-Null
    }

    # 批量插入prerequisites子节点
    foreach ($pre in $Prerequisites) {
        $newPreNode = $xmlDoc.CreateNode('element', 'dependency', '')
        $newPreNode.SetAttribute('id', $pre.Id)
        $newPreNode.SetAttribute('version', $pre.Version)
        $prerequisitesParent.AppendChild($newPreNode) | Out-Null
    }

    # 保存处理后的XML
    $outputFullPath = (Resolve-Path -Path $OutputXmlPath -ErrorAction SilentlyContinue).Path ?? (New-Item -Path $OutputXmlPath -ItemType File -Force).FullName
    $xmlDoc.Save($outputFullPath)
}

调用示例(匹配你提供的参数集)

# 构造dependency参数集
$depList = @(
    @{ Id = 'GGG'; Version = 'HHH' },
    @{ Id = 'III'; Version = 'JJJ' },
    @{ Id = 'KKK'; Version = 'LLL' }
)

# 构造prerequisite参数集
$preList = @(
    @{ Id = 'UUU'; Version = 'VVV' },
    @{ Id = 'WWW'; Version = 'XXX' }
)

# 执行更新
Update-XmlDependencies -InputXmlPath "D:\TEMP\INPUT.xml" -OutputXmlPath "D:\TEMP\OUTPUT.xml" -Dependencies $depList -Prerequisites $preList

关键说明

  • 严格匹配XML节点大小写,避免生成重复的错误命名节点
  • 直接复用原始XML中已存在的dependencies、prerequisites空节点,无需重复创建父节点
  • 支持任意数量的子节点插入,仅需对应修改传入的参数数组即可
  • 自动处理输出路径,输出文件不存在时会自动创建

内容的提问来源于stack exchange,提问作者neuvidor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:04