首页 > 解决方案 > talend 将行转换为列

问题描述

我需要从 xml 文件中读取字段。

XML就像:

<fieldlist>
<field name "foo" value="1"/>
<field name "bar" value="2"/>
<field name "baz" value="3"/>
<field name "empty" value=""/>
</fieldlist>

使用 FileInputXML 和 tXML_Map 我已经可以过滤掉空值。

但是现在我需要在单个操作中按名称列出所有值。

我怎样才能得到那些?我需要它,就像
|foo|bar|baz|
|1|2|3|

或者变量 foo=1, bar=2, baz=3

标签: xmltalend

解决方案


使用 xslt 组件解决了这个问题

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:text disable-output-escaping="yes">&lt;Values&gt;</xsl:text>
<xsl:text>&#10;</xsl:text>
    <xsl:for-each select="fieldlist">
         <xsl:text disable-output-escaping="yes">&lt;</xsl:text><xsl:value-of select="@Name"/><xsl:text disable-output-escaping="yes">&gt;</xsl:text>
         <xsl:value-of select="@Value"/>
         <xsl:text disable-output-escaping="yes">&lt;/</xsl:text><xsl:value-of select="@Name"/><xsl:text disable-output-escaping="yes">&gt;</xsl:text>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
<xsl:text disable-output-escaping="yes">&lt;/Values&gt;</xsl:text>
</xsl:template>
</xsl:stylesheet>

推荐阅读