使用 xslt 将逗号作为数据包含在 xml 到 csv 转换中

include comma as data in xml to csv conversion using xslt

我正在尝试将 xml 数据转换为 CSV。如何在 CSV 中将逗号添加为 data/text?
我不能使用 COMMA 作为分隔符,因为 CSV 是逗号分隔文件。请帮我生成如下数据:

rowId   data
1   [xValue,yValue,zValue]
2   [xValue,yValue,zValue]

一些示例数据:

<parent>
<c1>
<c2 x=1 y=2 z=3>
</c2>
</c1>
</parent>

我现在提取 xml 数据的 xsl 是: 添加逗号作为分隔符或文本是分隔文件中的数据。 请建议正确的方法。

            <xsl:for-each select="childlevel1/childlevel2">
                <xsl:value-of select="concat('','[')"/>
                <xsl:value-of select="@x"/>
                <xsl:value-of select="@y"/>
                <xsl:value-of select="@z"/>
                <xsl:value-of select="concat(']','')"/>
            </xsl:for-each>

如果您的实际数据中有逗号,您不想将其视为分隔符,则需要在该字段两边加上引号。

试试这个 XSLT:

<xsl:template match="parent">
    <xsl:text>rowId,data&#10;</xsl:text>
    <xsl:for-each select="childlevel1/childlevel2">
        <xsl:number />
        <xsl:text>,</xsl:text>
        <xsl:value-of select="concat('&quot;[',@x,',',@y,',',@z,']&quot;')"/>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
</xsl:template>

当你将它应用到这个XML

<parent>
    <childlevel1>
        <childlevel2 x="1" y="2" z="3" />
        <childlevel2 x="11" y="12" z="13" />
    </childlevel1>
</parent>

输出如下CSV

rowId,data
1,"[1,2,3]"
2,"[11,12,13]"

当您在您最喜欢的电子表格(例如 Microsoft Excel 或 OpenOffice)中打开它时,它应该只有两列。