span8号
斯潘4
现在可以在FME中使用更简单的XML读取方法。参见文章:
许多用户在读取复杂的XML或GML时遇到问题。这样做的方法是使用FME的通用XML阅读器。但是要做到这一点,您需要制作一个XFMAP。其基本思想是,在“功能映射”部分中指定要构成功能类型的XML结构中的哪个节点。然后在“要素内容映射”部分中指定每个要素包含的内容。下面是一个非常基本的例子来帮助你开始。然后您可以添加到其中,并使其像您以后想要的那样复杂。
假设我们要读取下面的源XML:
约翰 温哥华 1999年11月22日 2009年11月12日 -123.1、49.25-122.9、49.15 六月 萨里 2005年2月25日 95-10 -122.8、49.12-122.5、49.0
如您所见,它有一个嵌套结构。所以我们要做的第一件事就是决定哪个节点将在FME中表示我们的特性类型。我们可以选择FeatureCollection,但是我们会有一个巨大的记录。或者我们可以选择activedate作为我们的特性类型,但是我们会丢失很多其他信息。因此,在这种情况下,使特征类型最好的位置可能是在节点处
在xfmaps中,我们使用一个功能图来定义我们的功能类型。在这种情况下,它看起来像:
这告诉FME在读取“feature”元素时构造一个特性。注意,我们还没有定义任何内容,所以这只是一个容器,稍后我们将填充它。
所以让我们为新的特性类型定义一些内容。这里的诀窍是我们可以根据自己的需要读取尽可能多或尽可能少的XML。唯一的限制是xfmap只处理一次任何匹配,所以只有第一场比赛才能使用。让我们从一些简单的事情开始。
mapping match=“attribute1”说明要匹配的节点。
要实际读取此数据,需要将源粘贴到source.xml文件中,或者从本页底部下载。然后您可以将其拖放到工作台中,选择通用XML读卡器,然后单击“参数”按钮,选择xfmap作为配置类型,然后浏览到您的xfmap文件。如果XFMAP配置正确,您应该得到一个名为field的新特性类型,其中一个字段名为attr1。请注意,它没有几何图形,因此要查看可以连接到可视化工具的内容,运行它,然后在查看器中选择“不查看几何图形”。祝贺你,您刚刚创建了第一个XFMAP来解析XML源文件。
添加更多字段如何?好,我们可以为每个字段分别创建映射,但是只在一个映射表达式中列出我们想要的所有字段更容易。替换上一个
这将为attribute1和attribute2创建字段。本地名称将保持与匹配标记相同的名称,“.”将只提取匹配的值。设置时间较短,但不允许重命名字段。
嵌套的日期结构怎么样?对于传统的关系型或简单的特性类型XML或GML读卡器来说,这通常是造成悲伤的原因。通常这些字段根本不需要读取,读作某种列表结构,或者只是作为一个XML blob出现。
要读取日期字段,我们可以这样做:
因为我们匹配“activedate”,在匹配发生时,这将成为我们在XML文档中的相对位置。我们可以创建一个日期字段并给它值“.”,但是我们将有一个包含XML的字段。更好的选择是钻取对象结构并创建两个新字段,一个用于约会开始,一个用于约会结束。为此,我们使用一个提取表达式“./from”“./to”,它告诉FME从“from”和“to”属性中提取值,分别。
记得,如果您将activedate与attribute1和2一起列出,然后,该匹配表达式将捕获带有嵌套XML内容的activedate as字段,第二个activedate匹配表达式将被忽略。
xfmaps的一个限制是错误报告并不总是非常描述性的,通常只会告诉你XFMAP的第一个问题,因此,您需要从简单的开始,并逐步提高,以便了解XFmap语法的输入和输出。
最后但并非最不重要,让我们为特性添加一些几何图形。要做到这一点,我们需要在我们的特性中找到一个定义几何图形的元素,然后我们需要选择适当的XFmap对象类型来解释几何图形。让我们匹配坐标箱,并使用它创建一个XML框。
因此,我们在特征内容映射中创建一个映射匹配作为正常。但是,这次我们使用geometry_activate命令告诉FME我们要创建一个XML框几何体。还有XML点,XML行,XML区域和我们可以使用的许多其他几何类型。这些都在读者和作者手册的xml-xfmaps部分中定义。
记得,每次添加到XFMAP时,都需要重新导入数据集,或者至少删除并重新添加功能类型,以便读取新的模式信息(属性或几何定义)。如果您的工作区不知道您的模式更改,然后它将忽略它们,即使您已经将它们添加到XFMAP中。
最后,让我们给几何添加一些特征。特征是与特征上的单个几何图形相关联的标记或属性。当我们有多个几何图形与一个特征关联时,这些变得尤为重要。通常我们需要定义几何ID,如gml_id。
为了增加特性,我们使用
……
@符号告诉FME从
我们的“基本”例子到此结束。我还将添加一些快捷方式和其他几何图形的示例,但我们希望这将帮助您开始阅读XML,不管源代码或结构是什么。
把它们放在一起,以下是从源XML读取所有数据的完整XFMAP文件:
当我们读取“feature”元素时,构建一个FME特性。
?2019安全亚搏在线软件公司|合法的