首页 > 解决方案 > 将通用 XML 转换为 CSV(使用 XSLT)

问题描述

我需要通过 XSLT 将 xml 转换为 csv;我不知道 xml 中有哪些标签,而且它还包含重复的标签。xml 示例:

<?xml version="1.0" encoding="utf-8"?>
<AP     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
 xmlns:pd="http://www.ascentn.com/bpm/XMLSchema">
  <processFields>
    <smsText />
    <PID>810C005056A14F7F119914B53474BB65</PID>
    <ComplexProximity>
      <lasttNameTxt>!!!!!!!</lasttNameTxt>
    </ComplexProximity>
  </processFields>

  <formFields>
    <txtTz>777</txtTz>
    <SubFormProximity1_SubForm>

      <SubFormProximity1>
        <SaleryAvg>10000</SaleryAvg>
      </SubFormProximity1>

      <SubFormProximity1>
        <SaleryAvg>0</SaleryAvg>
      </SubFormProximity1>

      <SubFormProximity1>
        <SaleryAvg>777</SaleryAvg>
        <SubFormIncomeSources_SubForm>
          <SubFormIncomeSources>
            <ddl_Sfs_fWorkStatus>aa</ddl_Sfs_fWorkStatus>
          </SubFormIncomeSources>

          <SubFormIncomeSources>
            <ddl_Sfs_fWorkStatus>bb</ddl_Sfs_fWorkStatus>
          </SubFormIncomeSources>
        </SubFormIncomeSources_SubForm>
      </SubFormProximity1>
    </SubFormProximity1_SubForm>
  </formFields>
</AP>

此 xml 转换为:

    smsText,PID,lasttNameTxt,txtTz,SaleryAvg,ddl_Sfs_fWorkStatus
     ,810C005056A14F7F119914B53474BB65,!!!!!!!,777,10000
     ,810C005056A14F7F119914B53474BB65,!!!!!!!,777,0
     ,810C005056A14F7F119914B53474BB65,!!!!!!!,777,77,aa
     ,810C005056A14F7F119914B53474BB65,!!!!!!!,777,77,bb

有没有办法用 xslt 做到这一点?(注意它必须是通用的,没有硬编码的写标签名称)

我需要将 xml 导出到 excel (csv),所以它看起来像 excel 导出选项。列名称是标签名称 - 不包含儿童的标签。这些行来自标签值,如果有重复的标签和不同的值,则需要复制具有不同值的行。如果内部标签(没有子标签)为空 - 单元格也将为空

谢谢

标签: c#xmlcsvxslt

解决方案


推荐阅读