如何用PowerShell将XML中提取的ORGID转为逗号分隔字符串
问题描述
现有XML数据如下:
<data> <ValueSet Version="6.6"> <entry key="ORGID"> <Value>852357951364</Value> </entry> <entry key="MESSAGE_CODE"> <Value>MESSAGE1</Value> </entry> <entry key="REVERSAL"> <Value>REVERSAL1</Value> </entry> </ValueSet> <ValueSet Version="6.6"> <entry key="ORGID"> <Value>852357951365</Value> </entry> <entry key="MESSAGE_CODE"> <Value>MESSAGE2</Value> </entry> <entry key="REVERSAL"> <Value>REVERSAL2</Value> </entry> </ValueSet> </data>
使用以下PowerShell脚本提取ORGID值:
$XMLfile = 'C:\Users\XML_Input.xml' Select-Xml -Path $XMLfile -XPath '//entry[@key="ORGID"]' | foreach {$_.node.Value}
执行后输出为逐行形式:
852357951364
852357951365
需要将输出改为单行逗号分隔形式:852357951364,852357951365
解决方案
修改后的脚本如下:
$XMLfile = 'C:\Users\XML_Input.xml' # 收集所有ORGID值到数组,再用逗号连接成单行字符串 $orgIds = Select-Xml -Path $XMLfile -XPath '//entry[@key="ORGID"]' | ForEach-Object { $_.node.Value } $orgIds -join ','
也可以简化为单行写法:
$XMLfile = 'C:\Users\XML_Input.xml' (Select-Xml -Path $XMLfile -XPath '//entry[@key="ORGID"]' | ForEach-Object { $_.node.Value }) -join ','
说明
- 先通过
Select-Xml和ForEach-Object把所有ORGID值收集到一个数组中 - 利用PowerShell的
-join运算符,将数组元素用逗号连接成单个字符串,实现单行输出
内容的提问来源于stack exchange,提问作者Nandan
相关产品推荐
相关产品推荐

