例如,我的XML文件具有以下结构:
<?xml version="1.0" encoding="utf-8"?>
<MainItem>
<Field1>1</Field1>
<Field2>2</Field2>
<SubItem>
<SubField1>1</SubField1>
<SubField2>2</SubField2>
</SubItem>
<SubItem>
<SubField1>3</SubField1>
<SubField2>4</SubField2>
</SubItem>
</MainItem>
我确信XML文件中始终只有一个MainItem
。同时,一个MainItem
可能有多个SubItem
元素。
我希望能够使用XSLT将此XML转换为CSV。下面是我当前的XSLT脚本:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:text>Field1,Field2</xsl:text>
<xsl:text> </xsl:text>
<xsl:for-each select="MainItem">
<xsl:value-of select="Field1"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="Field2"/>
<xsl:text> </xsl:text>
</xsl:for-each>
此XSLT将XML转换为以下CSV:
Field1,Field2
1,2
问题是如何使用XSLT将上述XML转换为2个CSV文件 - 第一个用于MainItem
元素,第二个用于SubItem
?
我正在使用.NET XslCompiledTransform
类来执行转换。
答案 0 :(得分:1)
使用Cinchoo ETL库(开源ETL框架)
可以做到这一点using (var reader = new ChoXmlReader("test.xml").WithXPath("MainItem")
.WithField('Field1')
.WithField('Field2')
)
{
using (var writer = new ChoCSVWriter("test.csv"))
writer.Write(reader);
}
免责声明:我是这个图书馆的作者。