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

PowerShell中XML转CSV:如何将水平格式转为垂直格式?

将XML转CSV的PowerShell脚本改为垂直格式输出

你当前的脚本生成的是水平布局CSV(字段作为列,单条记录占一行),要改成垂直布局(每个字段名和对应值各占一行),可以直接修改脚本,省去中间导出再导入CSV的冗余步骤,直接处理XML节点生成目标格式:

修改后的脚本

$xmlPath = "C:\temp\test.xml"
$outputFolder = Split-Path -Parent $xmlPath

# 加载XML文件
[xml]$xml = Get-Content $xmlPath

# 遍历每个Employee节点
foreach ($employee in $xml.SelectNodes("//EmployeeImport/Employee")) {
    # 生成输出文件名:姓名+格式化后的入职日期(替换斜杠为下划线)
    $cleanHireDate = $employee.HireDate -replace '/','_'
    $fileName = "$($employee.FirstName) $($employee.LastName)_$cleanHireDate.csv"
    $outputPath = Join-Path -Path $outputFolder -ChildPath $fileName

    # 收集字段名和对应值,过滤掉PSObject自带的系统属性
    $verticalEntries = @()
    foreach ($prop in $employee.PSObject.Properties) {
        # 只保留实际业务字段,跳过XML节点的系统属性
        if ($prop.Name -notmatch 'NodeType|ParentNode|OwnerDocument|InnerXml|OuterXml') {
            $verticalEntries += [PSCustomObject]@{
                FieldName = $prop.Name
                FieldValue = $prop.Value
            }
        }
    }

    # 生成符合你期望格式的CSV内容(每行是字段名和对应值)
    $csvContent = $verticalEntries | ForEach-Object { "$($_.FieldName),$($_.FieldValue)" }
    $csvContent | Out-File -Path $outputPath -Encoding UTF8
}

关键改动说明

  1. 省去中间CSV环节:直接从XML节点提取数据,不用先导出再重新导入,提升运行效率

  2. 过滤无效属性:排除XML节点自带的系统属性(比如NodeType、InnerXml),只保留业务字段

  3. 生成垂直格式内容:把每个字段的“名-值”对转换成CSV的一行,最终输出的CSV内容为:

    Name,Mickey
    Social,123456
    

    对应表格展示就是你期望的垂直布局:

    NameMickey
    Social123456
  4. 保留原命名逻辑:输出文件的命名规则和你原来的脚本一致,确保文件名符合需求

可选:标准垂直CSV格式(更规范)

如果你需要更符合CSV规范的格式(固定表头,每行是属性和值),可以把生成内容的部分改成:

# 生成带固定表头的标准垂直CSV
$verticalEntries | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8 -Delimiter ','

对应的CSV内容为:

"FieldName","FieldValue"
"Name","Mickey"
"Social","123456"

表格展示为:

FieldNameFieldValue
NameMickey
Social123456

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:27:15