MapForce 提供动态访问节点名称的功能
在某些情况下,尤其是在处理结构松散的数据时,您可能需要将数据流中的结构化组件以及内容进行映射和转换。MapForce 可以动态访问 XML 元素的节点名称、属性,或者文本文件的列(例如 CSV 文件的内容),并将这些信息映射到目标组件。
动态访问节点名称的功能,允许实时创建目标元素和属性,而无需事先了解或明确指定这些元素的名称 数据映射. 这个功能允许您创建更加通用、灵活且可重复使用的映射关系,从而在数据模型发生变化时,减少手动干预的需求。

以下是一个非常常见的CSV文件格式的示例,在这个格式中,数据字段不是通过列名来标识,而是通过同一行中相邻单元格中的标签来标识

在这个例子中,记录的格式甚至不统一:有的记录在姓氏后面包含后缀,而另一些记录则包含中间名的首字母。
对于像这类文件,一种常见的的数据映射需求是将A列的单元格映射为XML元素的名称,并将B列的单元格映射为与每个对应元素相关联的值。现在,这可以通过动态映射节点名称轻松实现。下面我们来看看如何操作。
动态访问 XML 元素的节点名称
我们将首先创建一个非常简单的 XML Schema,用于定义映射的目标。该 Schema 使用 <xs:any> 元素来定义一个复杂的

我们首先导入CSV文件,然后使用一个分组函数,该函数会在输入文件中A列中每出现一次“FirstName”时,创建一个新的

接下来,我们导入目标 XML 模式,然后右键单击

我们将选择“显示子元素,并使用动态名称”的选项,这会打开一个对话框,我们将在其中选择“文本”作为子元素的的数据类型。 这样,

现在,将 Field1(CSV 文件的 A 列)映射到子元素的节点名称,将 Field2(B 列)映射到元素的内容,是一个简单的过程。以下是最终的数据映射关系:

位于顶部的“group-starting-with”函数会在输入文件中每次遇到“FirstName”时,创建一个新的
上述映射的结果如下所示:

使用动态访问节点名称的数据映射的优势在于,您无需对输入数据进行全面的调查,以识别和映射每一个可能的元素名称。
假设一种常见的生产场景,您需要从一个或多个外部来源接收多个输入文件,并使用 MapForce Server 和 FlowForce Server 自动执行映射过程。如果某个输入文件突然包含一个意外的子元素,例如“办公地点”或“邮件收件点”,数据不会丢失。
动态访问 XML 属性的节点名称
您还可以动态映射 XML 属性的名称,就像创建目标元素和属性一样,可以在运行时进行,而无需事先全部定义。