使用XSLT 3将XML转换为CSV

时间:2017-10-09 22:48:12

标签: xml csv xslt

我正在尝试将下面的Excel转换为CSV格式

<?xml version="1.0" encoding="UTF-8"?>
<metric_data_response>
<metric_data>
<from>2017-10-07T00:00:00+00:00</from>
<to>2017-10-08T00:00:00+00:00</to>
<metr_not_found/>
<metr_found>
<metr_found>sampleurl</metr_found>
</metr_found>
<metr>
<metric>
<name>sampleurl</name>
<timeslcs>
<timeslc>
<from>2015-11-07T00:00:00+00:00</from>
<to>2015-11-07T01:00:00+00:00</to>
<values>
<power_percent>1000</power_percent>
</values>
</timeslc>
<timeslc>
<from>2015-11-07T01:00:00+00:00</from>
<to>2015-11-07T02:00:00+00:00</to>
<values>
<power_percent>2000</power_percent>
</values>
</timeslc>
<timeslc>
<from>2015-11-07T02:00:00+00:00</from>
<to>2015-11-07T03:00:00+00:00</to>
<values>
<power_percent>3000</power_percent>
</values>
</timeslc>
</timeslcs>
</metric>
</metr>
</metric_data>
</metric_data_response>

以下格式为excel

2015-11-07T01:00:00 + 00:00,1000

2015-11-07T02:00:00 + 00:00,2000

2015-11-07T03:00:00 + 00:00,3000

例如“第一列中的”和第二列中的相应“power_percent”,并移至下一行以获取下一个数据。

1 个答案:

答案 0 :(得分:1)

试试这个:

<?xml version="1.0"?>

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

    <xsl:template match="/">
        <xsl:for-each select="/metric_data_response/metric_data/metr/metric/timeslcs/timeslc">
            <xsl:value-of select="to"/>,<xsl:value-of select="values/power_percent"/><xsl:text>&#x0A;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>