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

如何用XML和XSLT读取含逗号字段值并生成正确CSV

解决带逗号字段的XML转CSV问题

问题分析

现有代码存在几个关键问题:

  • XSLT匹配的Export/Record节点在提供的XML中不存在,XML根节点为ExportDocumentTest,且缺少实际数据记录
  • 包含逗号的字段未用双引号包裹,导致CSV解析时将逗号识别为列分隔符,输出错乱
  • 表头名称不符合需求(原代码输出AddressLine2,需要Address2)

修正后的代码

补充实际数据的XML示例

首先在XML中添加实际记录数据,示例如下:

<?xml version="1.0" encoding="utf-8" ?>
<ExportDocumentTest>
  <definitions>
    <Table Name="Header" Enabled="Y">
      <Columns>
        <Column Name="H_Address2" Value="AddressLine 2" Source="Text" ReportColumn="1" Enabled="Y"/>
      </Columns>
    </Table>  
    <Columns>
      <Column Name="D_Address2" DataType="string" Source="Text" Value="emp_address1"/>
    </Columns>                       
  </definitions>
  <!-- 新增实际数据记录 -->
  <Records>
    <Record>
      <D_Address2>Sixth Floor, 99 Gresham Street</D_Address2>
    </Record>
  </Records>
</ExportDocumentTest>

修正后的XSLT代码

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  exclude-result-prefixes="msxsl">
  <xsl:variable name="VAR_DELIMITER" select="','" />
  <xsl:variable name="VAR_QUOTE" select="'&quot;'" /> <!-- 定义双引号变量 -->
  
  <xsl:output method="text" encoding="utf-8"/>

  <!-- 处理根节点 -->
  <xsl:template match="/">
    <!-- 输出表头 -->
    <xsl:text>Address2</xsl:text>
    <xsl:text>&#xD;&#xA;</xsl:text> <!-- 换行符 -->

    <!-- 遍历所有记录 -->
    <xsl:for-each select="ExportDocumentTest/Records/Record">
      <!-- 对包含逗号的字段添加双引号包裹 -->
      <xsl:choose>
        <xsl:when test="contains(D_Address2, $VAR_DELIMITER)">
          <xsl:value-of select="concat($VAR_QUOTE, D_Address2, $VAR_QUOTE)"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="D_Address2"/>
        </xsl:otherwise>
      </xsl:choose>
      <xsl:text>&#xD;&#xA;</xsl:text> <!-- 换行符 -->
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

最终CSV输出

Address2
"Sixth Floor, 99 Gresham Street"

此输出可被CSV工具正确解析,带逗号的地址会被识别为单个完整字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:20:43