You are here: FME Transformers > Lists > ListExploder

ListExploder

Explodes each list member on each input feature out into its own feature.

Any attributes on the list are demoted to become non-list attributes of the feature output. In addition, the element number of the attributes in the original list is added to the feature. Each feature's output has a copy of the geometry from the original input feature.

Input Ports

Output Ports

Parameters

Attribute Accumulation

If attributes on the incoming and original feature share the same name, but do not start with fme_, then they are deemed conflicted.

Tip: Accumulation Mode determines which attributes remain on the exploded features.

When you choose Only Use Incoming List then you need to be aware that this will remove all existing attributes, including format attributes. This means your features won't have an fme_type, and this can cause them to be written incorrectly to a destination (for example, as non-geom features).

What might be even more confusing is that you won't see the problem if you connect the ListExploder to an Inspector: the features will appear to have the correct fme_type and fme_geometry. This is because when features are sent to the Inspector, FME converts them to FFS format first, which recreates these attributes. The problem would only be apparent if you sent the features to a Logger transformer, where you would see that fme_type is missing.

The solution to this problem is to set fme_type manually after the ListExploder.

Usage Notes

Valid List Invalid List
mylist{0}.attr1 mylist{1}.attr1
mylist{1}.attr1 mylist{2}.attr1
mylist{2}.attr1 mylist{3}.attr1
mylist{3}.attr1 mylist{4}.attr1

Examples

Example 1:

If this feature enters this transformer:

somelist{0}.length = 7.3

somelist{0}.kind = ’paved’

somelist{1}.length = 8.4

somelist{1}.kind = ’smooth’

somelist{1}.lanes = 2

somelist{2}.length = 1.1

somelist{2}.kind = ’rough’

another_attr = ’something else’

then, presuming that the list name specified was somelist{}, the index attribute was element_num, and the Attributes to Keep parameter was set to List Elements and Original Attributes, the first returned feature would look like:

length = 7.3

kind = ’paved’

element_num = 0

another_attr = ’something else’

If the Attributes to Keep parameter was set to List Element Attributes, the first returned feature would look like:

length = 7.3

kind = ’paved’

element_num = 0

Example 2:

Suppose you have a Input feature with the following 6 attributes. (The List Attribute used here would be ID{}.)

Name

Type

ID{0}.dec

ID{0}.hex

ID{1}.dec

ID{1}.hex

List Elements and Original Attributes will produce elements with 4 attributes:

Name

Type

dec

hex

List Element Attributes will produce elements with 2 attributes:

dec

hex

Editing Transformer Parameters

Using a set of menu options, transformer parameters can be assigned by referencing other elements in the workspace. More advanced functions, such as an advanced editor and an arithmetic editor, are also available in some transformers. To access a menu of these options, click beside the applicable parameter. For more information, see Transformer Parameter Menu Options.

Transformer Categories

Lists

FMEpedia

See a workspace example on FMEpedia.

Additional Resources

Search FMEpedia Knowledge Base

Search for samples and information about this transformer on FMEpedia.