有人可以帮助我将xml转换为csv(以下格式)。
XML>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<Shop>Walmart</Shop>
</soapenv:Header>
<soapenv:Body>
<ResponseEnvelope>
<Response>
<Part_electronics>
<type>electronics</type>
<item>Freeze</item>
</Part_electronics>
<Part_utility>
<type>utility</type>
<item>Parker</item>
</Part_utility>
<Part_grocery>
<type>grocery</type>
<item>sugar</item>
</Part_grocery>
</Response>
</ResponseEnvelope>
</soapenv:Body>
</soapenv:Envelope>
强文 CSV输出:
Walmart,electronics,Freeze
Walmart,utility,pen
Walmart,grocery,sugar
提前致谢。
答案 0 :(得分:1)
看起来你想要每一个&#34;部分_&#34;元件。在这种情况下,您应该从选择这些元素开始
<xsl:for-each select="//Response/*[starts-with(local-name(), 'Part_')]">
然后你可以通过选择所有孩子来获取字段
<xsl:for-each select="*">
<xsl:text>,</xsl:text>
<xsl:value-of select="text()" />
</xsl:for-each>
这假设所有&#34;部分_&#34;元素具有相同数量的元素。
试试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="Shop" select="//Shop" />
<xsl:for-each select="//Response/*[starts-with(local-name(), 'Part_')]">
<xsl:value-of select="$Shop"/>
<xsl:for-each select="*">
<xsl:text>,</xsl:text>
<xsl:value-of select="text()" />
</xsl:for-each>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这输出以下内容:
Walmart,electronics,Freeze
Walmart,utility,Parker
Walmart,grocery,sugar