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

如何用PowerShell为XML所有person标签新增Department节点并保留格式

实现方案

直接通过PowerShell原生XML API操作即可,既保证XML结构合法性,也可自定义缩进保留原文件格式,避免纯文本替换可能带来的标签匹配错误问题。

完整操作脚本(推荐,可完美保留原有格式)

# 替换为你的XML文件实际路径
$xmlPath = "C:\path\to\employees.xml"

# 加载XML文件,开启保留空格配置,原样保留原有缩进、换行
$xml = New-Object System.Xml.XmlDocument
$xml.PreserveWhitespace = $true
$xml.Load($xmlPath)

# 遍历所有person节点
foreach ($person in $xml.SelectNodes("//person")) {
    # 创建Department节点并赋值
    $deptNode = $xml.CreateElement("Department")
    $deptNode.InnerText = "Sales"
    # 将新节点追加到person节点的末尾
    $person.AppendChild($deptNode) | Out-Null
}

# 配置保存参数,对齐原有格式
$xmlSettings = New-Object System.Xml.XmlWriterSettings
$xmlSettings.Indent = $true
# 与原文件缩进保持一致,原示例为4个空格就填4个空格,用Tab就填`t
$xmlSettings.IndentChars = "    "
# 原文件没有XML声明头就保持$true,有就改成$false
$xmlSettings.OmitXmlDeclaration = $true

# 保存修改后的文件
$xmlWriter = [System.Xml.XmlWriter]::Create($xmlPath, $xmlSettings)
$xml.WriteTo($xmlWriter)
$xmlWriter.Flush()
$xmlWriter.Close()

简易版(对格式精度要求不高可直接使用)

# 替换为你的XML文件实际路径
$xmlPath = "C:\path\to\employees.xml"

# 加载XML
[xml]$xml = Get-Content -Path $xmlPath -Raw

# 批量添加节点
foreach ($person in $xml.employees.person) {
    $deptNode = $xml.CreateElement("Department")
    $deptNode.InnerText = "Sales"
    $person.AppendChild($deptNode) | Out-Null
}

# 直接保存
$xml.Save($xmlPath)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:33:02