你在这里: 使用FME桌面 > 使用列表

使用列表

列表属性是FME允许每个属性有多个值的方法。

转换器通常会自动创建一个列表,作为其特定过程的输出的一部分,通常是当来自不同特性的属性被分组到单个特性中时。

注意:FME列表可以在检查器中显示,也可以通过附加Logger变压器显示。

典型的列表如下:

mylist {0}

mylist {1}

您可以使用许多转换器来操作列表:请查看FME Workbench转换器库中的lists类别。

很少有输出格式支持列表,所以如果想要将数据输出到这种格式,首先需要管理列表。

提示:当你完成清单时,你应该删除它们,特别是那些有很多项目的清单。这将节省内存和处理时间,并将减少杂乱的工作空间。

命名约定

在Workbench中,列表通过名称表示,后面跟着一对大括号(例如,mylist {}).

属性集合可以使用属性列表.一个属性列表元素与任何其他属性一样,除了它的名称中包含一个用大括号{}括起来的整数索引。

一个特定的列表元素的数字在花括号之间:

mylist {0}

复杂列表可以包含多个元素:

mylist {0} .myattribute

注意:并不是所有的列表元素都有属性。有时,列表元素只是有一个值(例如,由AttributeSplitter生成的列表)。

按照惯例,列表的第一个元素的索引为0。

例如,如果一个特性有以下属性:

ids {0} 50

ids {1} 45

ids 10 {2}

我们会说这个特征有非结构化列表命名为“ids{}”,包含三个元素。在FME Workbench中,列表将作为变压器输出的一部分显示不合格名单的名字ids{}。

如果一个特性具有以下属性:

{0}重叠。方向1

{0}重叠。line_id 50

{1}重叠。方向1

{1}重叠。line_id 22

{2}重叠。方向1

{2}重叠。line_id 40

{3}重叠。方向1

{3}重叠。line_id 12

我们会说这个特征有结构化列表命名为“overlapped{}”,包含四个元素。在FME Workbench中,通过使用两个未限定的名称,列表将作为变压器输出的一部分显示:{} .direction重叠{} .line_id重叠

非限定列表名称提醒我们,该特性中有许多实际的属性值。但是,不能直接访问非限定列表名的值。相反,这些名称可以用作对列表进行操作的各种转换器的参数。此外,通过右键单击任何非限定列表,可以公开其中的许多元素,并从此直接访问它们。这些属性被称为合格的列表元素

公开列表元素

一些转换器和数据格式使用FME“列表”来保存多个属性值。列表转换器允许您使用这些列表。

一些变压器和读写器/写入器使用FME“列表”保存可以“重复”的值。如果希望访问列表的特定部分,可以使用ListExploder或ListIndexer转换器公开其中的一些元素,以便使用这些值。

例如,StringSearcher转换器的结果可以创建一个列表。您可能想要使用列表中的某个元素,因此您将“暴露”某些元素。

要访问Workbench中的特定列表元素,右键单击列表(例如:mylist {}),并选择Expose Elements。然后输入要公开的元素数量。List元素从0开始计数,因此暴露1个元素mylist {}会导致额外的属性mylist {0}是可用的。

列表元素可以将其他列表作为其属性的一部分:

mylist {} .secondlist {}

ListConcatenator转换器可用于将FME列表转换为逗号分隔的属性值,即:

mylist {0}

mylist C {1}

attribute_list A、C