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

PowerShell批量将无表头CSV转换为指定格式XML并导出的实现问题

调整后的完整实现代码
# 源CSV文件夹路径
$sourceFolder = 'C:\Users\somename\Desktop\FOLDER\Import\'
# 目标XML输出文件夹路径
$destFolder = 'C:\Users\somename\Desktop\FOLDER\Output\'

# 自动创建目标文件夹(如果不存在)
if (-not (Test-Path -Path $destFolder)) {
    New-Item -ItemType Directory -Path $destFolder | Out-Null
}

# 遍历所有CSV文件
Get-ChildItem -Path $sourceFolder -Filter *.csv | ForEach-Object {
    $csvFile = $_.FullName
    $outputXmlPath = Join-Path -Path $destFolder -ChildPath ($_.BaseName + '.xml')

    # 导入无表头CSV,手动指定列名
    $csvRows = Import-Csv -Path $csvFile -Header Col1,Col2,Col3,Col4 -Encoding UTF8

    # 拼接所有book节点
    $bookNodes = @()
    foreach ($row in $csvRows) {
        # 拼接name字段(第三列+第四列,中间加逗号)
        $name = $row.Col3 + ',' + $row.Col4
        # 生成单个book节点片段
        $bookNodes += @"
    <book>
        <title>$($row.Col1)</title>
        <acode>$($row.Col2)</acode>
        <name>$name</name>
    </book>
"@
    }

    # 生成完整XML内容,外层套统一根节点<books>(XML规范要求必须有唯一根节点)
    $fullXml = @"
<?xml version="1.0" encoding="UTF-8"?>
<books>
$($bookNodes -join "`n")
</books>
"@

    # 输出XML文件
    $fullXml | Out-File -FilePath $outputXmlPath -Encoding UTF8
}
关键修改说明
  • 去掉了原代码中先复制CSV到目标目录再改后缀的冗余逻辑,直接处理CSV生成XML后写入目标路径
  • 导入无表头CSV时通过-Header参数手动指定4列的列名,解决无表头无法正确读取字段的问题
  • 按照需求拼接第三、第四列为name节点值,通过Here-String模板生成符合要求的XML节点结构
  • 外层增加了<books>根节点,符合XML格式规范,如果不需要根节点仅保留单个,可自行调整模板内容
  • 如果CSV内容包含XML特殊字符(比如<>&等),可以对字段值添加转义处理,示例:$([System.Security.SecurityElement]::Escape($row.Col1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:27:06