SPAN8.
SPAN4.
Easier approaches to reading XML are now available in FME. See the articles:
Many users have problems reading complex xml or gml. The way to do this is with FME’s Generic XML reader. However to do this you need to make an xfmap. The basic idea is that you specify the which node within the xml structure you want to make into a feature type in the feature mapping section. Then you specify what each of these features contains in the feature content map section. Below is a very basic example to help you get started. You can then add to it and make it as complex as you want later.
假设我们想阅读以下源XML:
<?xml版本=“1.0”编码=“UTF-8”?>John attribute1> 温哥华 attribute2> <来自> 11-22-99 from> <至> 12-11-09 to> activeedate> -123.1,49.25 -122.9,49.15 coords> coords_box> feature> June Surrey 02-25-05 9-15-10 -122.8,49.12 -122.5,49.0
正如您所看到的那样,这具有嵌套结构。所以我们要做的第一件事是决定什么节点代表FME中的功能类型。我们可以选择特色,但随后我们会得到一个巨大的记录。或者我们可以选择激活作为我们的功能类型,但随后我们会缺少许多其他信息。因此,在这种情况下,可能是使功能类型的最佳位置是节点<功能>。我们可以看到,这应该产生2个功能,因为源XML中有2个功能块。
在XFMAPS中,我们使用特征映射来定义我们的功能类型。在这种情况下,它看起来像:
<?xml版本=“1.0”?>
这告诉FME在读取“功能”元素时构建功能。请注意,我们没有定义任何内容,所以这只是我们稍后填写的容器。
因此,允许为我们的新功能类型定义一些内容。这里的诀窍是我们可以像我们想要的那样读取XML。唯一的限制是XFMAP只会曾经处理过任何匹配,因此只使用第一个匹配。让我们从简单的东西开始。
<?xml版本=“1.0”?>
映射匹配=“attribute1”告诉我们要匹配的节点。
为了实际阅读此数据,您需要将源粘贴到源文件中。或从本页底部下载它。然后,您可以将其拖放到工作台中,选择“通用XML阅读器”,然后单击“参数”按钮,为配置类型选择XFMAP,然后浏览到XFMAP文件。如果正确配置了XFMAP,则应获取一个名为字段的新功能类型,其中一个名为ATTR1。请注意,它没有几何图形,以便查看可以连接到可视化器的内容,运行它,然后在查看器中选择“查看无几何”。恭喜,您刚刚创建了第一个XFMAP来解析XML源文件。
How about adding more fields? Well, we could have separate mappings for each field, but its easier to just list all the fields we want in one mapping expression. Replace the previous
<映射匹配= " attribute1 attribute2 " > <属性s>
这将为attribute1和attribute2创建字段。local-name将使名称与匹配的标记相同,“。”将提取匹配的值。设置较短,但不允许您重命名字段。
嵌套日期结构呢?这通常是传统关系或简单功能类型XML或GML读取器的悲伤。通常,这些字段根本没有读取,被读为一些列表结构,或者只是作为XML Blob。
要阅读日期字段,我们可以执行以下操作:
因为我们匹配“ActiveDate”,所以在匹配发生的那一刻就成为XML文档中的相对位置。我们可以创建一个日期字段并为其提供值“。”但后来我们将有一个包含XML的字段。更好的选择是钻取到对象结构并创建两个新字段,一个用于Date_start,一个用于date_end。我们通过使用提取物表达式“./from”“./to”来执行此操作,它告诉FME分别从FROM和属性中拔出值。
请记住,如果您列出了Appratione1和2的激活,那么匹配的表达式将捕获激活的AsiachAte作为嵌套XML内容的字段,并且将忽略第二个激活匹配表达式。
与XFMAPS的一个限制是错误报告并不总是非常描述的,并且通常只会告诉您XFMAP的第一个问题,因此您需要开始简单,然后工作以便学习INS和OUTS XFMAP语法。
最后但并非最不重要的是,让我们添加一些几何到我们的功能。为此,我们需要在我们的功能中找到一个元素,定义几何图形,然后我们需要选择适当的XFMAP对象类型来解释该几何图形。让我们匹配CONERDE_BOX并使用它来创建XML框。
<映射匹配=“coorde_box”>data> geometry> mapping>
因此,我们将在特征内容映射中创建映射匹配,正常。然而,这次我们使用Geometry_activate命令告诉FME,我们要创建XML-Box几何。还有XML点,XML线,XML区域以及我们可以使用的许多其他几何类型。这些都在读者和作家手册的XML - XFMAPS部分中定义。
Remember, every time you add to the xfmap you will need to reimport your dataset or at least delete and re-add the feature type in order for the new schema information (attribute or geometry definitions) to be read. If your workspace doesn't know about your schema changes, then it will ignore them even if you have added them to your xfmap.
最后,让我们为我们的几何添加一些特征。特征是与特征上的各个几何形状相关联的标签或属性。当我们有一个与一个特征相关的几何形状时,这些变得特别重要。通常,我们需要定义的GML_ID等几何ID。
要添加特征,我们使用几何定义中的<特征>标记如下:
<映射匹配=“coordst_box”>name> value> trait> ..。
The @ sign tells FME to pull the "101" property from the
结束了我们的“基本”的例子。我还将添加一些捷径和其他几何形象的例子,但希望这将帮助您开始阅读XML,无论源或结构如何。
将其放在一起,这是完成的XFMAP文件,它从源XML中读取所有数据:
<?XML Version =“1.0”?>在读取“功能”元素时构造FME功能。 noto> feature-type> mapping> mappe-map> <映射=“attribute1属性2”> <属性> <属性> <匹配的expr =“local-name”/> name> 值> 属性> 属性> mapping> <映射匹配=“ActiveDate”> <属性> <属性> <文字expr =“date_start”/> name> value> 属性> <属性> name> 值>
©2019 S亚搏在线afe Software Inc |Legal