span8
span4
理念通过lifalin2016··名单listexploderXML
嗨,
我刚刚遇到一个很讨厌的问题,即来自FME处理列表/以意想不到的方式集合(至少对我来说)。
当我读到一个XML文件中,每个项目可能具有的子项,其中可能包含0个或多个项目的集合。
当FME读父项,并找到子项目,它在列表中存储这些。
除非有只有一个子项!然后,子项的属性被存储在非列表多级属性。
这是恕我直言不一致。如果有_any_子项存在,应始终生成的列表。[我的建议]
在当前情况下,我需要三个变压器处理情况:
如果,如果有任何子项目总是生成的列表,我只需要3步。
多层次的属性仍然可以被创建时,如果遇到一个子项,以保持向后兼容性。
干杯
拉尔斯I.
juanchuchow评论·
嗨拉斯,
有一种方法来控制子元素应该究竟如何映射到属性。
在XML阅读器“参数...” - >“拼合选项:” - >“选项...”对话框中,更改为“高级”模式。
为xfmap <结构>元件的更多细节信息可以在这里找到:
在“基数”选项默认为“+ {}?”该属性应该被视为非列表时有可能,这个作品“好”时,属性不是深度嵌套,但是这总是取决于XML数据的类型。因此,要控制属性是如何映射,你的情况,你可以尝试更改基数来:
“* / * {?} / + {}”
在基数路径中的第一个项目总是指匹配的元素,在这种情况下,这将是“Ledning”,但是我们可以只使用通配符“*”,第二项,“* {}?”说来匹配任何元素作为非列表如果可能的话,在第三个项目,“+ {}”,表示始终映射任何后续的元素列表。
您可能会或可能不会也想从“是”更改地图空元素为“no”。这将防止空容器元素,如
在高级模式下的变化应该是这个样子:
<结构
...跳过不变的详细信息...
映射空元素=“否”
...跳过不变的详细信息...
基数= “* / * {?} / + {}”
... />
随着“高级”的XML阅读上述变化应该读与该属性Ledning元素:
XML_1_DEF Ledning \ Bemaerkning xml_char(20)\ DatoEtableret xml_char(20)\ DatoStatus xml_char(20)\ EjerforholdKode xml_decimal(3,0)\ FiktivLedning xml_char(2)\ Kaldenavn xml_char(18)\ KategoriKode xml_decimal(2,0)\ KnudePaaLedningItems.Knudenavn {} xml_char(9)\ LaegningsmetKode xml_decimal(2,0)\ Ledning {}。Knude1 xml_char(9)\ Ledning {}。Knude2 xml_char(9)\ Ledning {}。Loebenr xml_decimal(2,0)\ Netberegningxml_char(2)\ OprindKote xml_char(5)\ OprindXY xml_char(5)\ PunktItems.Punkt {}。甲手{} xml_decimal(4,2)\ PunktItems.Punkt {}。Sortering xml_decimal(2,0)\ PunktItems.Punkt{} .XKoordinat {} xml_decimal(9,2)\ PunktItems.Punkt {}。YKoordinat {} xml_decimal(10,2)\ StatusKode xml_decimal(2,0)\ Varenummer xml_char(18)\ xml_fragment xml_xml \ xml_id xml_char(15)\ xml_matched_element xml_char(8)\ xml_parent_child_pos xml_char(1)\ xml_parent_id xml_char(1)
或者,您可以强制所有内容始终是列表,而不是从默认基数“+ {}?”到“+ {}”。
希望这可以帮助。
问候,
胡安
JDH评论·
我提出在2012年同样的问题重新从唐的回应是相当多的解决方法。报价:
“问题的症结是,XML阅读器是基于它被赋予的数据做决定。我们已经一段时间想了,并会做更多。
我们做了,我们不想把一切都成列表,因为我们在XML中发现,因为这些是很难的工作与FME的决定。
当生成的工作空间是指定一大堆的XML文件,然后它会使用所有这一切找出属性的各种组合,你可以用FME做的是。然后你可以使用属性renamers解决的事情了。”
一,我很想有作为列表处理单个项目列表。即,如果模式被定义为一个阵列,则该元件应在一列表中,无论它是否是唯一一个或没有。
分享你的好想法,或通过其他人的想法投票助阵。
©2020安全亚搏在线软件公司|法律