span8
span4
大家好!
我刚接触XML,在使用XMLUpdater和XQuery时遇到了一些困难。我的问题是如何从FME列表中的3个属性更新一个xml元素中的3个属性来创建多个子元素。当我对一个列表中有2个条目的记录执行此操作时,它将产生9个子元素,而不是2个,我需要将数据分组到XQuery中的某个地方吗?
我已经附上样本工作台和数据。
我读的Excel文档,然后创建所有LCS_Codes每TAC_Code其措施的列表。那么我想这个名单我XML内形成一个位置元素的儿童。所以我希望从像这样的地方:
输入表:
此输出XML文本:
<位置>
<部分IDEL = “B077 / MSBLO” startPos = “0” endPos = “133.761”> 部分>
> < /位置
但是我得到这个:
<位置>
<部分IDEL = “B077 / MSBLO” startPos = “0” endPos = “133.761”> 部分>
<部分IDEL = “B077 / MSBLO” startPos = “0” endPos = “133.761”> 部分>
> < /位置
< / tractionCurrentSection >
我觉得上面是放列表中的每个部分,以列表的每个组成部分,因此,我有9个孩子,而不是2的3个属性,我更新。有没有一种方法,我可以通过列表条目,而不是告诉XQuery来组?
XQuery:
<位置> {
对于fme中的$list:get-list-attribute(“_list{}. lcs_code”),对于fme中的$Startlist:get-list-attribute(“_list{}”)。在fme中的$Endlist:get-list-attribute("_list{}。结束测量1”)
返回
}> < /位置
第二个问题…在示例输出从客户我有“部分”元素的XML只会结束/ >(下图),这就是我把xmlupdate(<艾德尔一部分= "{$列表}" startPos = " {$ Startlist} " endPos = " {$ Endlist} " / >)但我输出似乎> < / >部分属性后,这件事吗?我已经得到了要遵循的特定XSD。
期望的输出示例
<位置>
<部件ID =” D204 / DEBLO” startPos =” 54.98” endPos =” 1097.19”/>
> < /位置
我目前的输出
<位置>
<部分IDEL = “B077 / MSBFA” startPos = “0” endPos =“149.302" > < / >部分
<部分IDEL = “B077 / MSBLO” startPos = “0” endPos =“133.761" > < / >部分
> < /位置
随着一点点的背景资料,这是在那里我得到了一个相当庞大的XSD映射我们几个地理信息系统和Excel数据集,这只是一个特定的数据集一个更大的项目的一部分。正如我说我完全陌生的XML,并通过W3学校信息已经阅读变得有点更熟悉,但如果有谁知道任何其他的FME-XML特定的资源它的赞赏!
提前谢谢!
嗨@stephstedman,嵌套for语句会导致这种重复。试试这个表达。
<位置> {让$ S:= FME:GET-列表属性( “_列表{}开始计量收费1”。)让$ E:= FME:GET-列表属性( “_列表{}最终计量收费1”)在$ i的FME $代码:获取列表属性( “_列表{} LCS_CODE”)返回<部分IDEL = “{$代码}” startPos = “{$ S [$ I]}” endPos =“{$ E [$ i]于}” />} 位置>
另外,您也可以仅使用XMLTempleter生成所需的结果,而不使用XMLUpdater。这个工作空间示例包含计划B和计划C,它们演示了该方法。
tcs - xml -样品- 2. fmwt(FME 2019年1月1日)
希望这可以帮助。
嗨,隆
谢谢,我知道我在语法上有些问题。我现在已经修复,但我无法得到的内容xmlupdate来替换它XMLTemplater.也许我有更新类型和/或XML路径不正确的?
这是在原来的代码XMLTemplater:
<基地xmlns: xsi =http://www.sssxmlns: rsml =http://www.sss的xmlns =http://www.sss>
< / >节
<集团/ >
组>
< /基础>
谢谢
嗨@takashi,我有一个类似的问题xmlupdate.我想要得到以下xml输出:
<组ID = “X” 类别= “行”>
<节ID = “A”>
<节ID = “B”>
<节id = " C " >
组>
我已经创建了以下列表使用listbuilder分组的ID和类别属性:_list {} .CODE
在里面xmlupdate我已经输入了以下参数:
组更新功能通过: ID和类别
更新类型:取代
XML路径:/ /组
值类型:XML / XQuery的
值:
<组> {ID = “FME:GET属性(” ID “)” 类别= “FME:GET属性(” CATEGORY “)”
在FME $代码:获取列表属性(“_名单{}代码”。)
返回
<节ID = “{$代码}”/>
}< /组>
然而,这似乎并不奏效。能否请您看看,让我知道如果我失去了一些东西?
谢谢,
嗨@aquamarine很接近,但错了。试试这个表达,仔细看看它和你的表达有什么不同。
<组ID = “{FME:获取属性(” ID “)}” 类别= “{FME:GET属性(” CATEGORY “)}”> {用于FME $代码:获取列表属性(“_列表{} .CODE “)返回<节ID =”{$代码}“/>} 组>
©2020安全亚搏在线软件公司|法律