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

PowerShell将XML转为CSV:如何将key节点的line字段追加到结果中

PowerShell实现XML转CSV并追加key节点的line字段

我们需要将给定的XML转换为CSV格式,核心要求是把每个<TestElements>节点下<key>子节点中的line字段,追加到该节点下所有<td>元素的结果之后,最终输出符合预期的结构。

示例XML

[xml] $sample = '<TestTop><TestElements><td field="head.office">ABC</td><td field="head.number">101</td><td field="head.colour">Blue</td><key><office>ABC</office><number>101</number><line>1</line></key></TestElements><TestElements><td field="head.office">ABC</td><td field="head.number">102</td><td field="head.colour">Red</td><key><office>ABC</office><number>102</number><line>2</line></key></TestElements></TestTop>'

解决方案代码

# 遍历每个TestElements节点,处理内部的td和key数据
$outputObjects = $sample.TestTop.TestElements | ForEach-Object {
    # 把当前节点下的td元素转换为统一结构的对象
    $_.td | Select-Object @{Name='field'; Expression={$_.field}}, @{Name='#text'; Expression={$_.'#text'}}
    # 构造line字段对应的对象,和td结构保持一致
    [PSCustomObject]@{
        field = 'line'
        '#text' = $_.key.line
    }
}

# 预览输出结果
$outputObjects | Format-Table -AutoSize

# 导出为CSV文件(替换为你需要的文件路径)
$outputObjects | Export-Csv -Path "./output.csv" -NoTypeInformation

代码说明

  • 遍历每个<TestElements>节点,保证每组td和对应的line字段关联,避免数据错位。
  • 用Select-Object将td的属性映射成和最终输出一致的对象结构,确保字段名匹配。
  • 手动构造line对应的自定义对象,使其和td对象结构完全相同,合并后可直接输出为统一格式的CSV。
  • 通过Format-Table快速查看结果,Export-Csv的-NoTypeInformation参数会去掉CSV开头的类型信息,更符合常规CSV格式。

输出效果

运行代码后,Format-Table的预览结果如下:

field       #text
-----       -----
head.office ABC
head.number 101
head.colour Blue
line        1
head.office ABC
head.number 102
head.colour Red
line        2

导出的CSV文件内容为:

field,#text
head.office,ABC
head.number,101
head.colour,Blue
line,1
head.office,ABC
head.number,102
head.colour,Red
line,2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:50:29