如何用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
相关产品推荐
相关产品推荐

