使用 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 </xsl:text>
<xsl:for-each select="childlevel1/childlevel2">
<xsl:number />
<xsl:text>,</xsl:text>
<xsl:value-of select="concat('"[',@x,',',@y,',',@z,']"')"/>
<xsl:text> </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)中打开它时,它应该只有两列。
我正在尝试将 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 </xsl:text>
<xsl:for-each select="childlevel1/childlevel2">
<xsl:number />
<xsl:text>,</xsl:text>
<xsl:value-of select="concat('"[',@x,',',@y,',',@z,']"')"/>
<xsl:text> </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)中打开它时,它应该只有两列。