首页 > 解决方案 > 如何使用 bat 文件将 XML 转换为 csv

问题描述

我正在尝试在 windows cmd 行中运行一个 bat 文件以将 xml 转换为 csv。我从另一篇关于 SO 的旧帖子中获得了 bat 文件代码,它几乎可以工作,我只是不知道我错过了什么。任何人都可以看到有什么问题吗?

代码:

@echo off
setlocal enabledelayedexpansion
set inFile="C:\Users\Michael\Desktop\Addresstest\address.xml"
set outFile="C:\Users\Michael\Desktop\Addresstest\output.csv"
set req_tags=apn address
set outLine=
echo apn,address > %outFile% 
for %%a in (%inFile%) do (
  for %%c in (%req_tags%) do (
    set search_tag=%%c
    for /f "tokens=2 delims=><  " %%b in ('type "%%a" ^|findstr /i !search_tag!' ) do (
      if [%%b] NEQ [] (
        rem we don't want to match /BSN
        if [%%b] NEQ [/BSN] (
          set outline=!outline!%%b,
        )
      )
    )
  )
)
rem output the values
rem remove trailing ,
set outline=%outline:~0,-1%
echo %outline%>>"%outFile%"
endlocal

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl'?> 
<container>
    <apn id=34652>
        <address>1234 second street</address>
    </apn>
    <apn id=6123>
        <address>8743 Willer Rd.</address>
    </apn>
    <apn id=67425>
        <address>345-A Duet way</address>
    </apn>
    
</container>

输出:

apn,address  
apn id=34652,/apn,apn id=6123,/apn,apn id=67425,/apn,address,address,address

如您所见,它输出标签但不输出数据,也不是数据格式。

标签: xmlcsvbatch-file

解决方案


推荐阅读