XML扁平化器
将XML元素的内容展平为要素属性。
此转换器通过指定元素名称或路径,提供了一种快速简便的方法,可以将XML元素的任何内容或属性输出为特性属性。或者,来自指定元素的祖先的XML属性也可以作为FME属性获取。
XmlFlatter当前不支持多个匹配项,因此要从源XML生成多个功能,请使用XMLFragmenter。
输入端口
输入包含XML文档信息的功能。
输出端口
每个特性都将包含从XML元素展开的属性。
参数
XML源
从列表中选择将启用该选择的相应参数:
- XML文件:启用XML文件字段。
- XML属性:启用XML属性字段。
展平路径
此参数指定要展平的元素。展平路径是用空格分隔的xfMap匹配表达式,或者可以在新行上指定每个表达式。有关详细信息,请参见FME读写器手册:XML(可扩展标记语言)读写器>xfMap.
直接在文本框中键入或单击“浏览”按钮以显示编辑器或选择设置为属性值选择包含元素表达式的特征属性。
特征路径是用空格分隔的xfMap匹配表达式。有关详细信息,请参见FME读写器手册:XML(可扩展标记语言)读写器>xfMap.
示例:input.xml
约翰·史密斯 诺德曼 朗格特234000斯塔万格 挪威 皇帝讽刺剧 特别版 一 十点九零 藏起你的心 一 九点九零
此表列出了上例中所示的一些展平路径xfMap表达式。
“订购人” | 将orderperson元素的文本内容添加到orderperson功能属性中 |
“收货方” | 将shipto元素的子元素的文本内容添加到以下功能属性中:name、address、city和country。 |
“item[@id=1]”或等效
|
这与属性id等于1的名为item的文档中的元素匹配。它添加子项的文本内容作为功能属性:标题、注释、数量和价格。 |
“订购人发货地址
|
前面三个匹配的表达式组合在一起,每个都用换行符分隔。 |
自定义属性
“选项”按钮打开“XML展平选项”对话框。这些选项控制如何将元素的内容映射为要素属性。
默认视图为基本模式,其中列出了几个选项:
- 默认选中“启用展平”。
- 忽略特定子元素>要忽略的子元素:指定应忽略的匹配元素(来自展平路径)的子元素。在上面的示例中,如果扁平化路径为“shipto”,则如果此选项设置为“country city”,则输出中将忽略country和city内容。
- 跳过空元素:指定是否应将空元素映射为空功能属性
- 添加自定义前缀>前缀:指定将从展平XML结构中添加的所有要素属性的前缀
- Include XML Child Position>Attribute Name:指定属性名,其值将是子元素在其父元素中的位置。
- 添加祖先属性>祖先元素:指定扁平路径中元素的父元素,其XML属性也将作为功能属性添加到输出中。
“高级”按钮打开“高级编辑器”,其中提供了自定义功能属性的其他选项。下表描述了每个选项的功能。这里的选项允许自定义将添加到FME特性的匹配XML子树的属性和属性列表。
选项(带示例值) | 说明 | 默认值 | 可能值 |
---|---|---|---|
分隔符=“。” |
此选项的值用作匹配元素的子元素的属性命名中的分隔符。 |
期间(.) |
任何字符串 |
打开列表大括号=“{” |
为展平属性指定开放列表索引分隔符大括号。 |
默认值(如果未指定):{ |
任何字符串 |
关闭列表大括号=“}” |
为展平属性指定闭合列表索引分隔符大括号。 |
如果未指定默认值:} |
任何字符串 |
map empty elements=“是” |
如果设置为“是”,则任何空元素都将作为具有空值的属性添加到功能中。否则,属性将不会添加到功能中。 |
未指定默认值:是 |
是|否 可能值:任意字符串 |
matched prefix=“属性” |
此选项控制生成的FME特性属性是否以匹配元素的名称作为前缀。 如果值为yes,则匹配元素的属性及其所有子元素都将加上前缀 如果值为“否”,则没有任何特征属性以匹配元素的名称作为前缀 如果值是children,则只有匹配元素的子元素加上前缀 如果值是attributes,那么只有匹配元素的属性加上前缀。 |
未指定默认值:是 |
是|否|子属性 |
matched attributes=“是” |
如果此选项设置为“是”,则匹配元素的属性将映射为FME特征属性。否则,匹配元素的属性将被忽略。 matched prefix选项也可以设置为attributes,或者设置为yes,以允许属性以匹配元素的名称作为前缀。 |
未指定默认值:是 |
是|否 |
匹配的祖先属性=“” |
该选项控制来自匹配元素祖先的XML属性是否应包含为FME特征属性。 -“parent”或“1”:添加匹配元素的父元素的XML属性 -“祖父母”或“2”:添加匹配元素祖父母的XML属性 -“根”或“-1”:添加文档根的XML属性 -任何非负数:通过从匹配元素向上x层添加祖先的XML属性。0是匹配的元素。 要包含多个祖先,可以用空格分隔多个值。 例如:要从根、父和父中获取属性,可以指定 matched祖先属性=“父祖父母根” |
父母祖父母 |
|
基数=“+{?}" |
此选项可以指定为以空格分隔的基数指令列表。 |
默认值:+{?}(如果有多个同名子元素,则将其视为列表) |
可能的值:请参阅XML阅读器文档中的xfMap部分。 |
除了=“” |
except属性接受与映射规则的match或except属性相同类型的表达式。 例如,表达式except=“parent/child{2}”可用于排除第二个
|
任意路径表达式 |
|
结构前缀=“” |
此选项可以设置为非空字符串,作为为匹配元素生成的每个属性的前缀。 |
任何字符串 |
|
子位置属性=“” |
当此选项设置为非空字符串时,每个子元素将生成一个附加的feature属性,其值将是子元素在其父元素中的位置。 |
任何字符串 |
|
属性标识符=“” |
XML属性可以与叶元素区分开来。通过将此选项设置为非空字符串,XML读取器将向叶元素中的属性追加前缀。 |
所有选项在FME读写器手册:XML(可扩展标记语言)读写器.
可以指定Elements As Fragments参数以将匹配元素的子元素提取为xml片段。
例如,如果扁平化路径是“shipto”,并且元素As Fragment设置为“country”,那么输出特性有一个额外的属性“xml_Fragment_country{0}”,其值设置为
参数
公开任何属性,以便其他转换器可以使用它们。直接在文本框中键入或单击“浏览”按钮以显示编辑器并在其中添加属性。
编辑变压器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来指定变压器参数。一些转换器中还提供了更高级的功能,如高级编辑器和算术编辑器。要访问这些选项的菜单,请单击在适用参数旁边。有关详细信息,请参见变压器参数菜单选项.
变压器类别
搜索FME知识中心
在上搜索有关此转换器的示例和信息FME知识中心.