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

如何使用PowerShell将XML中对应ID的值替换入CSV并保存

实现方案

你现有的代码已经实现了从XML中匹配ID对应值的核心逻辑,仅需补充值回写到CSV行和结果导出的逻辑即可,同时我们可以提前构建映射哈希表来提升大文件的处理效率,完整代码如下:

$CSVpath = "G:\1.csv"
$xmlPath = "G:\1.xml"
# 替换后的文件输出路径,不会覆盖原文件,避免数据丢失
$outputCsvPath = "G:\1_替换完成.csv"

# 加载XML文件
($xmlDoc = [xml]::new()).Load((Convert-Path $xmlPath))

# 预构建字段-ID-值的三级映射表,避免循环中重复遍历XML节点
$mappingTable = @{}
foreach ($enumType in $xmlDoc.enum_types.enum_type) {
    $field = $enumType.field_name
    $mappingTable[$field] = @{}
    foreach ($item in $enumType.items.item) {
        $mappingTable[$field][$item.id] = $item.value
    }
}

# 导入待处理CSV
$csvData = Import-Csv -Path $CSVpath
$allColumns = $csvData[0].psobject.Properties.Name

# 遍历替换ID值
foreach ($row in $csvData) {
    foreach ($col in $allColumns) {
        $currentId = $row.$col
        # 仅当字段有映射配置、且ID存在对应值时执行替换
        if ($mappingTable.ContainsKey($col) -and $mappingTable[$col].ContainsKey($currentId)) {
            $row.$col = $mappingTable[$col][$currentId]
        }
    }
}

# 导出处理后的CSV,指定编码避免乱码,如需在Excel中正常打开可将Encoding改为UTF8BOM
$csvData | Export-Csv -Path $outputCsvPath -Encoding UTF8 -NoTypeInformation

说明

  • 预构建映射表的优化方案,处理10万行以上的大文件时效率提升非常明显
  • 导出时默认保留原文件,生成新的结果文件,避免误操作丢失原始数据
  • 可根据实际使用场景调整导出编码,适配不同的读取工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:30:01