xml - 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
解决方案
使用 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>
推荐阅读
- angular - 使用 Guard 读取功能模块的存储状态,以便在根级别中使用
- visual-studio-code - Visual Studio 代码中断
- python - ModuleNotFoundError:没有名为“redisgraph”的模块
- mongodb - 基于mongodb中子文档数组中的数组的条件计数?
- chart.js - Chart.Js饼图点击
- html - 神秘闪烁的黑线,几乎就像 NextJS 中的边框
- c++ - Qt -- QPlainTextEdit::extraSelections 覆盖 QSyntaxHighlighter
- php - minimum_number_should_match 在 Elasticsearch 新版本中不起作用
- javascript - 从 Javascript 中的属性执行函数
- omnet++ - MacOS 上的 Veins 教程