斯潘8
斯潘4
大家好,我有一个XML问题。在我的数据(dgn v8)中,我有一个名为
igds_链接.xml_数据。
它看起来像这样:
我想要的是用它们的值提取属性。
例如:attribute='type'value='muur'&attribute='imgeo'value='bestaand'
我现在使用一个xmlflattener
但我的结果是这样的一个列表。
可以看到列表中的第一个项具有不同的属性值“identificatiebagpnd”,而不是类型。
那么,我如何从XML中获取属性和值,并使其成为动态的呢?(将中的所有列表项提取到属性中)
啊!我看到在FME集线器上已经有了一个自定义的转换器,可以满足您的需要。
所以…做为JDH建议并使用xmlsfragmenter创建属性列表。
然后使用listkeyvaluepairextractor transformer(您可能需要fme2017.1),它会将您的列表转换为真正的属性。简单。
我也认为JDH他的解决方案已经足够好了,但是,对不起的,我无法抗拒尝试XQuery解决方案…
假设该特性有一个名为“xml-fragment”的属性,它存储一个xml片段。例如
十万五千九百六十三 穆尔 贝斯塔德 内伊 零 P0027.cdffbb11ae7c4f56a96af8f6c17cefb5 20170626172844000
让$x:=fme:get xml属性(“xml_fragment”)让$members:=对于$x中的$a//attribuut返回'“'string($a/@naam)'”:“'$a/text()'”'返回'fn:string join($members,',')'''}
“gisobjectnummeer”:“105963”,“type”:“muur”,“imgeo status”:“最佳状态”,“in onderzoek”:“nee”,“relativehoogteligging”:“0”,“Identificatie”:“p0027.cdffbb11ae7c4f56a96af8f6c17cefb5”,“Tijadstipregistratie”:“20170626172844000”
对于//attribuutreturn中的$A,fme:set属性($A/@naam,$A/文本()有趣。如果将公开参数的属性添加到转换器中,这将更加有用。
如果使用带有元素的xmlsfragmenter来匹配设置为“feature”并启用扁平化,则最终将为每个功能提供一个键值对列表。
前任。
'attribuut 0'的值为'muur'
'attribuut 0.naam'具有值'type'
'attribuut 1'的值为'bestaad'
'attribout 1.naam'具有值'imgeo status'
然后,您可以遍历列表并将每个元素对转换为一个属性。
带属性创建者的ex
@值(attribuut 0.naam);属性{ 0 }
另一方面,如果每个属性需要一个特性,可以将碎片器设置为attribut,最终得到attribut=muur,attribut.naam=类型,你可以在没有列表索引的情况下做同样的事情。
?2019安全亚搏在线软件公司|合法的