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

使用PowerShell解析嵌套XML数组并导出为CSV的技术问询

PowerShell读取嵌套XML并导出为CSV单条记录

要处理这种嵌套XML结构,核心是遍历每个<object>,再遍历其下的每个<job-action>,将父级字段与子级字段组合成单条记录,最后导出为CSV。以下是具体实现:

步骤1:加载XML文件

先用[xml]类型转换器读取XML内容,方便后续节点访问:

# 替换为你的XML文件路径
[xml]$xmlContent = Get-Content -Path "C:\path\to\your\file.xml"

步骤2:遍历嵌套节点并构建记录

通过嵌套循环,将每个<object>与它的每一个<job-action>配对,生成自定义对象:

$csvRecords = foreach ($object in $xmlContent.objects.object) {
    # 提取父级object的字段
    $objectId = $object.id.'#text'
    $objectName = $object.name.'#text'

    # 遍历当前object下的所有job-action
    foreach ($jobAction in $object.'job-actions'.'job-action') {
        # 构建单条记录对象
        [PSCustomObject]@{
            ObjectId       = $objectId
            ObjectName     = $objectName
            JobActionId    = $jobAction.id.'#text'
            JobActionName  = $jobAction.name.'#text'.Trim()  # 去除文本多余空格
        }
    }

    # 处理没有job-action的object(可选逻辑)
    if (-not $object.'job-actions'.'job-action') {
        [PSCustomObject]@{
            ObjectId       = $objectId
            ObjectName     = $objectName
            JobActionId    = $null
            JobActionName  = $null
        }
    }
}

步骤3:导出为CSV

将收集到的记录导出为CSV文件:

$csvRecords | Export-Csv -Path "C:\path\to\output.csv" -NoTypeInformation -Encoding UTF8

关键说明

  • 带type属性的XML节点,其文本内容存储在#text属性中,因此需要用.id.'#text'格式提取实际值。
  • 对于包含多个<job-action>的<object>,会生成多条CSV记录,每条对应一组父级字段与子动作字段的组合。
  • 可选的空job-action处理逻辑,确保即使某个object没有子动作,也能保留其基础记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:07:19