0

0

PowerShell怎么读取和修改XML文件

月夜之吻

月夜之吻

发布时间:2025-12-18 11:41:07

|

805人浏览过

|

来源于php中文网

原创

PowerShell通过[xml]类型转换读取XML并用XmlDocument操作,需注意UTF8编码、命名空间处理及XPath定位,修改后调用.Save()保存。

powershell怎么读取和修改xml文件

PowerShell 读取和修改 XML 文件非常方便,核心是用 [xml] 类型加速解析,再通过 .NET 的 XmlDocument 对象操作节点。关键不是“怎么加载”,而是“怎么准确定位并安全修改”——尤其要注意命名空间、属性写法、保存编码等易错点。

读取 XML 并转为可操作对象

直接用 [xml] 强制类型转换是最常用方式,PowerShell 会自动加载为 XmlDocument 对象:

$xml = [xml](Get-Content "config.xml" -Encoding UTF8)

⚠️ 注意:
– 必须指定 -Encoding UTF8(或对应编码),否则含中文时可能乱码;
– 文件路径要存在,否则报错;
– 如果 XML 格式不合法(如标签未闭合),转换会失败,建议加 try/catch

查找和读取特定节点内容

推荐用 SelectSingleNode()SelectNodes() 配 XPath,比遍历更精准:

  • $xml.SelectSingleNode("//server[@id='prod']/ip").InnerText → 获取 id="prod" 的 server 下 ip 节点的文本
  • $xml.SelectNodes("//user").Count → 统计所有 user 节点个数
  • 若 XML 含命名空间(如 xmlns="http://example.com/ns"),需先创建 XmlNamespaceManager 并注册前缀,否则 XPath 查不到

修改节点内容、属性或结构

改内容用 .InnerText,改属性用 .SetAttribute(),新增节点用 .CreateElement() + .AppendChild()

Soundful
Soundful

Soundful Ai音乐生成器,只需一个按钮即可生成免版税曲目

下载
  • 改文本:$xml.SelectSingleNode("//database/name").InnerText = "NewDB"
  • 改属性:$xml.SelectSingleNode("//connection").SetAttribute("timeout", "30")
  • 新增子节点:$newNode = $xml.CreateElement("backup"); $newNode.InnerText = "true"; $xml.root.AppendChild($newNode) | Out-Null
  • 删除节点:$nodeToRemove = $xml.SelectSingleNode("//temp"); $nodeToRemove.ParentNode.RemoveChild($nodeToRemove) | Out-Null

保存回文件(保留格式与编码)

直接用 .Save() 方法,它默认按原始编码保存,但不会自动美化缩进:

$xml.Save("config.xml")

如果希望输出带缩进的可读格式,可手动设置:
$xml.PreserveWhitespace = $false
$xml.Save("config.xml")
不过 PowerShell 原生不支持自动缩进输出(不像 .NET 的 XmlWriter),如需格式化,得额外用 System.Xml.XmlWriter 构造器配置,日常简单修改通常够用。

基本上就这些。不复杂但容易忽略编码和命名空间——先确认 XML 结构,再选对 XPath,改完记得 .Save(),别只改内存对象。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

233

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

437

2024.03.01

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

198

2023.11.20

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1897

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2088

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1040

2024.11.28

java进行强制类型转换
java进行强制类型转换

强制类型转换是Java中的一种重要机制,用于将一个数据类型转换为另一个数据类型。想了解更多强制类型转换的相关内容,可以阅读本专题下面的文章。

284

2023.12.01

C++类型转换方式
C++类型转换方式

本专题整合了C++类型转换相关内容,想了解更多相关内容,请阅读专题下面的文章。

299

2025.07.15

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.8万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 19万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号