PowerShell处理xml便捷高效,核心是[xml]类型自动解析并支持点号语法访问节点属性;可加载、查询(XPath)、修改、保存或从零构建XML文档,但修改后须显式调用.Save()或输出内容。

PowerShell 处理 XML 文件非常方便,核心是用 [xml] 类型加速解析,配合点号语法(.)直接访问节点和属性,不用写复杂 dom 代码。
读取 XML 文件并转为对象
PowerShell 把 XML 当作 .net 的 System.Xml.XmlDocument 对象处理,支持强类型访问:
- 用
[xml]$xml = Get-Content "config.xml"加载文件(自动解析) - 或用
[xml]$xml = [xml]::new(); $xml.Load("config.xml")手动加载(适合大文件或需异常控制) - 成功后可直接用
$xml.Root.Child.Name访问元素,$xml.Root.Child.Attribute读属性
查询和筛选节点(XPath + SelectSinglenode/SelectNodes)
原生支持 XPath,比遍历更高效:
-
$xml.SelectSingleNode("//user[@id='101']")—— 找 id=101 的 user 节点 -
$xml.SelectNodes("/config/appSettings/add")—— 获取所有 add 元素 - 结果是
XmlNode集合,可管道进foreach-Object处理
修改和保存 XML
改值、增删节点都直观,但注意:修改后必须显式保存:
- 改文本:
$node.InnerText = "new value" - 改属性:
$node.SetAttribute("enabled", "true") - 新增子节点:
$new = $xml.CreateElement("log"); $node.AppendChild($new) - 保存:
$xml.Save("config.xml")(覆盖原文件)或$xml.OuterXml | Set-Content "new.xml"
写入新 XML(从零构建)
适合生成配置或导出数据:
- 创建空文档:
$xml = [xml]::new() - 添加根节点:
$root = $xml.CreateElement("config"); $xml.AppendChild($root) - 追加子节点:
$child = $xml.CreateElement("version"); $child.InnerText = "2.1"; $root.AppendChild($child) - 最后别忘
$xml.Save("output.xml")
基本上就这些。PowerShell 操作 XML 不复杂但容易忽略保存步骤,记得每次改完调 .Save() 或重新输出内容。