0

0

PowerShell的Select-Xml命令怎么用

星降

星降

发布时间:2026-01-19 00:47:35

|

686人浏览过

|

来源于php中文网

原创

Select-Xml需正确指定XML来源参数(-Path、-LiteralPath、-Xml或-Content)并处理命名空间、XPath语法、节点提取及编码问题,否则即使XPath正确也返回空。

powershell的select-xml命令怎么用

直接用 Select-Xml 就能查节点,但必须配对正确参数

它不是“输入 XML + 输入 XPath 就出结果”的傻瓜命令——Select-Xml 要求你明确告诉它 XML 数据从哪来:-Path(文件路径)、-LiteralPath(带特殊字符的路径)、-Xml(已加载的 XmlNode[] 对象)或 -Content(原始 XML 字符串)。漏选或错选参数,哪怕 XPath 完全正确,也返回空。

  • -Content 最常用:配合 Get-Content -Raw 读整个文件为字符串,避免换行/编码干扰
  • -Path 看似方便,但遇到含空格、括号、中文路径时容易报错,此时必须换 -LiteralPath
  • -Xml 参数要传 [xml] 类型对象(如 [xml](Get-Content file.xml -Raw)),不能传字符串,否则报错 “Cannot convert value to type ‘System.Xml.XmlNode[]’”

XPath 写不对是“查不到”的最常见原因

不是语法难,而是容易忽略命名空间、大小写、根层级和默认文档结构。比如 PowerShell 自带的 $PSHOME\Types.ps1xml 是带命名空间的,直接写 //AliasProperty 会失败。

  • 检查 XML 是否有 xmlns="http://schemas.microsoft.com/powershell/2004/04" 这类默认命名空间——有就得注册前缀,再在 XPath 中用,例如:
    $ns = @{t='http://schemas.microsoft.com/powershell/2004/04'}
    Select-Xml -Path $path -XPath '//t:AliasProperty' -Namespace $ns
  • // 开头可跨层级匹配,但性能略低;用绝对路径如 /Types/Type/Members/AliasProperty 更快更稳
  • 属性要用 @name,比如 //fruit[@color='red'];文本内容用 text(),比如 //title/text()

拿到结果后怎么取值?别直接用 .InnerText

Select-Xml 返回的是 SelectXmlInfo 对象数组,真正 XML 节点藏在 .Node 属性里。新手常写 $result.InnerText 报错,因为 $result 本身不是节点。

喜鹊标书
喜鹊标书

AI智能标书制作平台,10分钟智能生成20万字投标方案,大幅提升中标率!

下载
  • 提取所有匹配节点的文本:
    $result | ForEach-Object { $_.Node.InnerText }
  • 提取属性值:
    $result | ForEach-Object { $_.Node.Attributes['name'].Value }
  • 想展开成表格看多个字段,用 Select-Object -ExpandProperty Node 后再选子属性,比如:
    Select-Xml -Content $xml -XPath '//fruit' | Select-Object -ExpandProperty Node | Select-Object @{n='Name';e={$_.Attributes['name'].Value}}, @{n='Color';e={$_.Attributes['color'].Value}}

PowerShell 版本和编码问题真会静默失败

PowerShell 5.1 的 Select-Xml 对 UTF-8 BOM 和 UTF-16 支持不稳定;PowerShell 7+ 改进很多,但仍建议统一用 -Encoding Utf8(v7.2+)或 -Raw 配合 [xml] 强转来规避。

  • 如果 XML 文件用记事本保存过,极可能带 UTF-16 LE BOM —— Get-Content 默认按系统编码读,会导致解析失败。务必加 -Encoding Utf8 或改用 [xml]::new().Load($stream)
  • PowerShell Core / 7+ 中 Select-Xml 已移入 Microsoft.PowerShell.Utility 模块,无需手动导入;但旧脚本若依赖 Windows PowerShell 特有行为(如某些命名空间处理),迁移到 PS7 可能需微调 XPath
实际调试时,先确认 Get-Content -Raw 输出是否是你预期的 XML 字符串,再验证 XPath 是否能在在线 XPath 测试器(如 freeformatter.com/xpath-tester)中跑通——这两步省掉,90% 的“没结果”问题都能当场定位。

相关专题

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

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

1881

2024.04.01

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

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

2087

2024.08.01

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

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

1014

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

258

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

208

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1465

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

619

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

550

2024.03.22

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

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

精品课程

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

共102课时 | 6.7万人学习

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

共162课时 | 18.9万人学习

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

共119课时 | 12.4万人学习

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

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