powershell原生支持xml解析与操作,依托[xml]类型加速器和system.xml.xmldocument对象,可加载、查询、修改、保存xml,支持命名空间处理。
PowerShell 原生支持 XML 解析和操作,主要靠 [xml] 类型加速器和 .NET 的 System.Xml.XmlDocument 对象。它不依赖外部工具,语法简洁,适合自动化配置、读写 CI/CD 文件(如 .csproj、app.config)、处理 API 返回的 XML 等场景。
加载 XML 文件并解析成对象
用 [xml] 强制转换读取文件或字符串,PowerShell 会自动构建可导航的对象模型:
- 使用
Get-Content -Raw读取整个文件(避免换行截断),再转为[xml] - 节点变成属性,子节点名即属性名;同名多个节点会自动转为数组
- 文本内容通过
#text属性访问(仅当节点含纯文本且无子元素时)
示例:
$xml = [xml](Get-Content "config.xml" -Raw)
# 获取第一个 <connectionString> 的值
$xml.configuration.connectionStrings.add[0].connectionString
# 遍历所有 <add> 元素
$xml.configuration.connectionStrings.add | ForEach-Object { $_.name }
安全修改 XML 内容(避免直接字符串替换)
直接改字符串易破坏格式或编码,推荐用 DOM 方法操作:
- 用
SelectSingleNode()或SelectNodes()定位节点(支持 XPath) - 修改
.InnerText、.InnerXml或属性值(如.SetAttribute("key", "newVal")) - 新增节点:用
CreateElement()+AppendChild()或InsertBefore() - 删除节点:调用父节点的
RemoveChild()
示例(更新属性):