talend 行转列
talend convert rows to columns
我需要从 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
使用 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"><Values></xsl:text>
<xsl:text> </xsl:text>
<xsl:for-each select="fieldlist">
<xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="@Name"/><xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:value-of select="@Value"/>
<xsl:text disable-output-escaping="yes"></</xsl:text><xsl:value-of select="@Name"/><xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:text> </xsl:text>
</xsl:for-each>
<xsl:text disable-output-escaping="yes"></Values></xsl:text>
</xsl:template>
</xsl:stylesheet>
我需要从 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
使用 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"><Values></xsl:text>
<xsl:text> </xsl:text>
<xsl:for-each select="fieldlist">
<xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="@Name"/><xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:value-of select="@Value"/>
<xsl:text disable-output-escaping="yes"></</xsl:text><xsl:value-of select="@Name"/><xsl:text disable-output-escaping="yes">></xsl:text>
<xsl:text> </xsl:text>
</xsl:for-each>
<xsl:text disable-output-escaping="yes"></Values></xsl:text>
</xsl:template>
</xsl:stylesheet>