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

如何用XSLT将XML转CSV并合并指定列及添加记录总数尾行

XML转CSV:实现列合并+尾行总记录数

核心方案

在你现有实现总记录数的XSLT基础上,通过XSLT字符串拼接函数完成多列合并,同时保留统计逻辑。以下是具体示例:

模拟输入XML(匹配常见业务结构)

<root>
  <record>
    <id>1</id>
    <name>Alice</name>
    <phone>123-456-7890</phone>
    <email>alice@demo.com</email>
  </record>
  <record>
    <id>2</id>
    <name>Bob</name>
    <phone>098-765-4321</phone>
    <email>bob@demo.com</email>
  </record>
</root>

修改后的XSLT代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" encoding="UTF-8"/>

  <!-- 定义CSV分隔符、换行符、合并列分隔符 -->
  <xsl:variable name="csv-sep" select="','"/>
  <xsl:variable name="line-break" select="'&#10;'"/>
  <xsl:variable name="merge-sep" select="' | '"/>

  <!-- 统计总记录数 -->
  <xsl:variable name="total-records" select="count(/root/record)"/>

  <xsl:template match="/">
    <!-- 输出CSV表头 -->
    <xsl:text>ID,Name,Contact</xsl:text>
    <xsl:value-of select="$line-break"/>

    <!-- 遍历输出每条记录 -->
    <xsl:for-each select="/root/record">
      <xsl:value-of select="id"/>
      <xsl:value-of select="$csv-sep"/>
      <xsl:value-of select="name"/>
      <xsl:value-of select="$csv-sep"/>
      <!-- 合并phone和email为单列 -->
      <xsl:value-of select="concat(phone, $merge-sep, email)"/>
      <xsl:value-of select="$line-break"/>
    </xsl:for-each>

    <!-- 输出尾行总记录数 -->
    <xsl:text>Total Records: </xsl:text>
    <xsl:value-of select="$total-records"/>
  </xsl:template>
</xsl:stylesheet>

预期CSV输出

ID,Name,Contact
1,Alice,123-456-7890 | alice@demo.com
2,Bob,098-765-4321 | bob@demo.com
Total Records: 2

关键细节说明

  1. 列合并逻辑:用concat()函数直接拼接多列文本,自定义分隔符区分原字段内容;如果使用XSLT 2.0及以上版本,推荐用string-join((phone, email), $merge-sep),更适合3列及以上合并场景。
  2. 特殊字符处理:如果XML字段包含逗号、双引号等CSV特殊字符,需添加转义:
    <!-- 给字段套双引号,并转义内部双引号 -->
    <xsl:value-of select="concat('&quot;', replace(name, '&quot;', '&quot;&quot;'), '&quot;')"/>
    
  3. 总记录数保留:原有的count()统计逻辑直接复用,放在遍历完成后输出即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:10:23