span8
span4
XML是结构化文本的一种形式,常用于开放标准和交换格式使用。它也经常在网络和通讯应用中遇到的。如果能够把数据转换为XML是FME的一个重要功能。本文介绍FME的方法来编写XML,包括以帮助你开始一个基本的例子。它假定的基本FME和XML的概念有一些了解。例如,在XML中,术语“元件”可以涉及到任何一个特征或方面FME根据XML文档如何解释的属性。看到FME方针XML更多的背景。
FME使用模板的方法来编写XML。XML文档结构被放置在或引用由XMLTemplater变压器。然后FME:获取属性的功能被放置在您想要的功能属性值将被合并到文档中的位置在模板中。这功能很像一个邮件合并操作,其中信模板接收名称和地址值从每个记录动态生成定制的消息。
XML文档可以生成每一个特征,例如用于数据集的元数据。或根和子模板可用于有一个根基于多记录数据集的多个子元素文档模型。XML文档结构可以从XSD使用XMLSampleGenerator产生或者从一个示例XML输出文档获得。那么,元件值被替换使用FME FME字段值:我们想要的内容获取属性功能由源数据来驱动。由XMLTemplater产生的XML被存储在,然后可以验证,并与XMLValidator和XMLFormatter变压器格式化的单一_result属性。在这个练习中,我们使用示例XML种子模板,将离开验证和格式化以后的练习。
通常情况下,最终输出使用文本文件作家,因为XML结果属性只是一个大的文本字段写入磁盘。在XML作家是不经常使用,因为它还不支持从XSD阅读模式。有特殊情况的XML作家是有益的,如使用片段模式写非常大的XML数据集中。这种先进的方法允许它们被接收,而不是写的是与文本文件作家的情况下才建立整个文档的缓冲区写入XML片段。
下面的练习演示如何将单个记录馈送到XMLTemplater模板中,并生成与Safe_Building_Demo.XML中找到的结构匹配的基本XML文档。亚搏在线
一打开FME工作台。
从一个空白的工作区开始。拖放附加的源CSV文件:Building.scv。
二添加XMLTemplater。
将其转换为XML的第一步是生成根元素。为了创建XML模板,我们从要生成的XML文件类型的示例的根对象复制内容—在本例中,是Safe_Building_Demo.XML的根。亚搏在线
添加XMLTemplater,将CSV源构建功能类型连接到它,编辑XMLTemplater并将以下内容放在根模板中:
街道地址 城市 公元前 加拿大 0 0
三。在XMLTemplater之后连接一个日志程序并运行工作区。
请注意,模板只会写入结果字段中的输出。
我们真正想要的是在编写XML之前将输入CSV记录中的值合并到模板中。为此,我们只需打开XMLTemplater,编辑根目录,单击要合并值的每个元素的内容,然后单击要合并值的属性。这应该将与我们选择的属性({fme:get attribute(“Building_id”)}等)关联的属性函数插入到我们放置光标的模板位置。
对所有可用属性执行此操作后,应具有如下所示的根模板:
{fme: get-attribute(“地址”)} {fme: get-attribute(“城市”)} {fme: get-attribute(“省”)} {fme: get-attribute(“中国”)} {fme: get-attribute(经度)} {fme: get-attribute(“纬度”)}
4.最后,要将此写入磁盘,从写入器菜单中添加一个文本文件写入器。
将目标文件路径设置为building_output.xml,然后将输出MIME类型设置为text/xml。这对于在某些查看器(如web浏览器)中正确显示xml非常重要。为了给文本文件写入程序提供数据,将XMLTemplater的“Result attribute”设置为“text_line_data”。
五运行工作区并检查生成的building_output.xml输出。查看如何将这些值合并到XML文档结构中。您应该看到以下输出。注意fme:get attribute(“”)函数是如何被feature attribute值替换的:
7445年第132位。 萨里 公元前 加拿大 -122.860 49.138
下面的练习演示如何从1.a获取工作区,并使用XMLTemplater子模板基于输入记录添加多个子元素。
回到最初的任务,我们希望使用FME生成与Safe_Building_Demo.XML中找到的结构匹配的XML内容。亚搏在线我们在示例1a中生成了根内容,因此下一步是生成Room元素。
一首先,向read room . CSV添加一个新的CSV阅读器。
二接下来,编辑XMLTemplater。
选中子模板并单击“+”以添加新的子模板。
图1所示。带有子模板的XMLTemplater配置
与之前一样,我们使用要生成的对象的单个示例实例或元素启动模板。在本例中,我们需要一个Room元素的示例,可以从Safe_Building_Demo.xml中的第一个房间获得:亚搏在线
接待 管理 12
然后单击OK将更改保存到XMLTemplater。您将注意到XMLTemplater上有一个名为“SUB”的新输入端口。我们需要将文件室输入特性连接到此,以便在特性模式上为XMLTemplater提供所需的字段。
现在连接了房间功能类型,我们可以用从输入CSV文件中读取的值替换这些值。这将生成如下所示的子模板:
{fme: get-attribute(“名字”)} {fme: get-attribute(“类别”)} {fme: get-attribute(“区域”)}
要完成XMLTemplater配置,我们需要告诉根模板调用子模板。这是使用fme:process features(“SUB”)函数完成的。将其添加到根模板中,以便在建筑父对象的末尾插入房间子元素。
{fme: get-attribute(“地址”)} {fme: get-attribute(“城市”)} {fme: get-attribute(“省”)} {fme: get-attribute(“中国”)} {fme:工艺特点(“子”)} {fme: get-attribute(经度)} {fme: get-attribute(“纬度”)}
三。在XMLTemplater之后添加XMLFormatter。
最后,在写入磁盘之前格式化xml是一个好主意。这使得查看我们的输出和解决任何问题变得容易得多,而且由于只有有效的XML可以格式化,因此还有捕获语法错误的额外好处。稍后我们将更详细地讨论验证。
在XMLTemplater之后添加XMLFormatter。将“带XML文本的属性”和“包含XML输出的属性”设置为:“文本行数据”。剩下的设置保留默认值(格式类型应该是“漂亮的打印XML”)。
4.将XMLFormatter的输出连接到text_line输出特性类型。
运行工作区。您的输出应该如下所示。请注意在“位置”元素之后插入到建筑对象中的多个房间元素:
7445年第132位。 萨里 公元前 加拿大 -122.860 49.138 接待 管理 12销售办公室 销售 20.会议室 会议 25
运行后,已完成的工作区如下所示。注意,XMLTemplater对于根构建元素有一个输入特性,对于Room元素有三个输入特性,对于组合的XML文档的输出有一个输出特性。
©2019安全亚搏在线软件公司|法律