使用xsl将XML文件转换为CSV

时间:2018-01-10 11:17:53

标签: xml csv xslt

我有一个Groovy脚本,在系统中进行一些查询,因此我得到一个XML文件,但是为了进一步的工作,我需要将它转换为csv。不幸的是,我用xsl完成了nubie,并且我尝试应用不同的发现示例并且他们都在执行结果,这是不可接受的。

这是我的XML:

@ExceptionHandler(NotFoundException.class)
public ResponseEntity<Object> applicationFormNotFound() {
    final HttpHeaders headers = new HttpHeaders();
    headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
    headers.add(HttpHeaders.CONTENT_LENGTH, "0");
    return ResponseEntity.status(HttpStatus.NOT_FOUND)
            .headers(headers)
            .build();
}

我只需要用逗号分隔的所有单元格,没什么特别的。 请帮忙!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下XSLT。

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

    <xsl:template match="report">
        <xsl:for-each select="header/column">
            <xsl:value-of select="." />
            <xsl:if test="position() != last()">
                <xsl:value-of select="','" />
            </xsl:if>
        </xsl:for-each>
        <xsl:for-each select="rowset/row">
            <xsl:text>&#xD;</xsl:text>
            <xsl:for-each select="cell">
                <xsl:value-of select="." />
                <xsl:if test="position() != last()">
                    <xsl:value-of select="','" />
                </xsl:if>
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

这会产生以下输出

metrics,value
Start Time,
Sucessful Requests,0
Failed Requests,0
Pending Requests,0
Warning Requests,0
Cancelled Requests,0
Added Docs,0
Deleted Docs,0
Updated Docs,0
Indexed Content Size(byte),0
Token Size(byte),0
Average Latency(seconds),
Max Latency(seconds),
Documents Indexed Per Second,0
Bytes Indexed Per Second,0