ListExploder
Explodes each list member on each input feature out into its own feature.
Any attributes on the list are copied 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
Features containing list members.
Output Ports
If the list is found in the input feature, it will be processed based on Accumulation Mode and output via this port.
If the list is not found in the input feature, the feature will be output via this port without being processed. In this case, the Accumulation Mode parameter will not be applied and the transformer will pass the feature through without processing it.
Parameters
The name of the list that will be exploded by this transformer.
If the Element Index Attribute is specified, then each element feature output will be given an attribute containing the element's list position.
Attribute Accumulation
In some cases, a feature's non-list attributes may share the same name as attributes that are generated by the ListExploder. For example, consider a feature with a non-list attribute length and a list attribute somelist{0}.length, somelist{0}.kind, somelist{1}.length, somelist{1}.kind,... If somelist is exploded, the feature may contain two length attributes - one from the original, non-list attribute, and one from the somelist list attribute. If the generated attributes share the same name as a feature's original, non-list attributes, but are not geometry attributes that start with fme_, they are deemed conflicted.
Use the following parameters to specify which attributes to keep on the output features, and which attribute's values to maintain in case of conflicts.
Merge List Attributes: The feature retains all of its own un-conflicted attributes, and additionally acquires any un-conflicted attributes generated by the transformer. This mode handles conflicted attributes according to the Conflict Resolution parameter.
Prefix List Attributes: The feature retains all of its own attributes. In addition, the feature acquires attributes generated by the transformer, with the name prefixed with the Prefix parameter.
Only Use List Attributes: All of the feature's attributes are removed, except geometry attributes that start with fme_. Then, the feature acquires all of the attributes and associated values that are generated from the exploded list attribute.
Use Original Attribute Values: If a conflict occurs, maintain the values of the original, non-list attribute.
Use List Attribute Values: If a conflict occurs, transfer the values of the generated attributes onto the original, non-list attributes.
If the Accumulation Mode parameter is set to Prefix List Attributes, this value prefixes attributes that are added to the feature.
Usage Notes
- If Input attributes and list element attributes have the same name, the Input attributes will be overwritten by the list element attributes.
- ListExploder will not work with an invalid list, such as one that doesn't start at entry 0. For example:
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 Accumulation Mode parameter was set to Merge List Attributes, the first returned feature would look like:
length = 7.3
kind = ’paved’
element_num = 0
another_attr = ’something else’
If the Accumulation Mode parameter was set to Only Use List 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
Merge List Attributes will produce elements with 4 attributes:
Name
Type
dec
hex
Only Use List 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
Additional Resources
Search FME Knowledge Center
Search for samples and information about this transformer on the FME Knowledge Center.