【问题标题】:How to priortize execution of xml tags in txmlMap using talend如何在 talend 的 txmlMap 中优先执行 xml 标签
【发布时间】:2017-11-11 07:24:42
【问题描述】:

我是 Talend 新手,在使用 txmlmap 时遇到问题。

我有一个 XML 文件,我需要将该 XML 中的数据插入 SQL Server。我已在 Talend 中建立连接以连接到 SQL Server,但是在确定 XML 标记的优先级时遇到了一些问题。

这是我的 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <entry name="opertaion-round-title">
        <valstr>ROUND 1</valstr>
    </entry>
    <entry name="site">
        <valstr>SITE NAME</valstr>
    </entry>
    <entry name="plant">
        <valstr>PLANT NAME</valstr>
    </entry>
    <entry name="opertaion-area">
        <valstr>G AREA</valstr>
    </entry>
</data>

我正在使用txmlMap 将数据从 XML 传递到数据库。我有四张桌子。我需要根据条目标签(名称)放置值。

SITES,
PLANTS,
OPERATING_AREAS,
OPERATING_ROUNDS

我需要将站点值放入 SITES 表,将植物值放入 PLANTS 表,将操作区域值放入 OPERATING_AREAS 表,将操作回合标题放入 OPERATING_ROUNDS 表。

我已成功获取表中的值,但是我首先想将站点值插入 SITES 表,然后将植物值插入 PLANTS 表,然后是 OPERATING_AREAS 和 OPERATING_ROUNDS 表。

我面临的问题是,xml 中首先存在的任何值都会插入到该表中。即在这种情况下,它首先将值插入 OPERATING_ROUNDS 表,因为 xml 中的第一个标签是&lt;entry name="opertaion-round-title"&gt;。但我想按以下顺序

SITES
PLANTS
OPERATING_AREAS
OPERATING_ROUNDS

那么无论如何我们可以在 txmlMap 中设置标签执行的优先级,这样无论哪个标签先出现,它都会根据我们定义的优先级处理标签。

请查看附件截图

【问题讨论】:

    标签: sql-server talend


    【解决方案1】:

    如果我没记错的话,您可能需要过度考虑您认为自己处理数据的方式:

    • 首先,您将遍历一个 XML 文件(如果 data 部分中有更多条目)
    • 然后您将进行一些映射。通常,这发生在输入组件中。所以这就是你说“我有一个名为 SITES 的行变量,它应该填充 data/sites/valstr 的内容”的地方。没有映射的图片,所以这很难猜
    • 您的行将填充 4 个值,即您记下的 4 个值
    • 然后您只需将它们拆分为您创建的四个存储桶(输出组件到数据库中)

    意思是,不需要优先级。您只需要确保映射正确,然后您也可以在 tMap 中执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多