2017-10-09 91 views
0

我想下面的轉換將XML轉換爲CSV擅長以CSV格式使用XSLT 3

<?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

請不要只是要求我們在編寫代碼爲您服務。解釋你已經嘗試了什麼以及你卡在哪裏。 –

回答

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>