You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell读取XML:如何提取嵌套Types节点内容并格式化输出

问题:PowerShell读取XML嵌套节点并格式化输出

尝试读取XML文件并输出其中信息,XML结构如下:

<?xml version="1.0" encoding="utf-8"?>
<ModelList>
 <Model name="ThinkCentre M715Q">
  <Types>
   <Type>10M4</Type>
   <Type>10RA</Type>
   <Type>10RB</Type>
   <Type>10M5</Type>
   <Type>10RC</Type>
   <Type>10M2</Type>
   <Type>10RD</Type>
   <Type>10M3</Type>
  </Types>
 </Model>
</ModelList>

使用以下PowerShell代码获取Model的name属性:

[xml]$xmlFile = Get-Content -Path C:\Temp\data.xml
$xmlFile.GetType().Attributes
$xmlFile.ModelList.Model | Format-Table

当前输出:

name              Types
----              -----
ThinkCentre M715Q Types

期望输出:

name              Types
----              -----
ThinkCentre M715Q 10M4, 10RA, 10RB, 10M5, 10RC...

需要指导如何将嵌套Type值与对应Model关联并格式化输出。


解决方案

当前代码直接输出Model对象时,Types列显示的是XML节点对象而非具体Type值,需通过计算属性将嵌套的<Type>节点值合并为逗号分隔的字符串,再与name属性关联输出。

基础实现(完整显示所有Type值)

[xml]$xmlFile = Get-Content -Path C:\Temp\data.xml
$xmlFile.ModelList.Model | Select-Object `
    name,
    @{Name='Types'; Expression={$_.Types.Type -join ', '}} |
    Format-Table -AutoSize

输出效果:

name              Types
----              -----
ThinkCentre M715Q 10M4, 10RA, 10RB, 10M5, 10RC, 10M2, 10RD, 10M3

带省略号的实现(适配长内容)

如果希望过长的Types内容自动截断并添加省略号,可在计算属性中增加长度判断:

[xml]$xmlFile = Get-Content -Path C:\Temp\data.xml
$xmlFile.ModelList.Model | Select-Object `
    name,
    @{
        Name='Types';
        Expression={
            $typesStr = $_.Types.Type -join ', '
            # 设定截断长度,这里以30为例
            if ($typesStr.Length -gt 30) {
                $typesStr.Substring(0, 30) + '...'
            } else {
                $typesStr
            }
        }
    } |
    Format-Table -AutoSize

输出效果:

name              Types
----              -----
ThinkCentre M715Q 10M4, 10RA, 10RB, 10M5, 10RC...

原理说明

  • $_.Types.Type:遍历当前Model节点下所有<Type>子节点,获取其文本值
  • -join ', ':将多个Type值合并为单个逗号分隔的字符串
  • 计算属性(@{Name='Types'; Expression={...}}):替换原有的Types节点对象,将合并后的字符串作为新的Types列值

内容的提问来源于stack exchange,提问作者Obbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:54:17