SSIS中Foreach循环容器处理XML数据
上一篇文章 在SSIS 中使用 Web Service 以及 解析XML 数据 中介绍了使用SSIS的WebService控件解析XML数据,最后也提到对于返回的XML数含有数组类型的时候需要一点额外的处理。 示例说明WeatherWebService 是WebXml.com.cn 天气预报 Web 服务,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。 我们可以通过这个服务的接口获得我们需要的城市或地区的天气等信息。本示例将介绍在SSIS中用Web服务任务组件调用天气预报Web服务的接口查询城市的天气等信息,因为返回XML格式的数据含有数组,所以用Foreach循环容器组件的NodeList枚举器来处理,获取我们需要的信息插入到数据库的表。 实现步骤HTTP连接 首先我们建立一个HTTP连接,服务器URL如下: Web服务任务 拖入Web服务任务组件,打开编辑器,在常规面板中,HttpConnection连接选择上一步新建的Http连接,WSDLFile为自己新建的一个wsdl格式的文件,OverwriteWSDLFile为True.点击【下载WSDL】。 切换到输入面板,Method中选择getWeatherbyCityName,然后下面出现的变量里填一个城市名称,当然也可以用变量。 切换到输出面板,这里,我们将返回的XML格式的数据保存到一个Object类型的变量里。这样Web服务任务组件就设置好了。 返回数据说明 到WeatherWebService网站上查看getWeatherbyCityName的调用说明:
可以看到返回的是一个一维数组。 我们将用循环处理这个一维数组,然后获得我们需要的字段,比如省份,城市,城市代码,最后更新时间,当天气温,概况,风向和风力,现在的天气实况,天气和生活指数。 Foreach循环容器 在控制流中拖入Foreach循环容器,双击打开编辑器,在集合面板中,Enumerator选择Foreach NodeList 枚举器,DocumentSourceType为输入的XML数据存储类型,这里选择上一步的保存XML数据的变量,DocumentSource为变量名称。 EnumerationType选择NodeText,因为这里我们想要的是XML数据中标签中的值,不是节点。OuterXPathStringSourceType是XPath查询的类型,这里我们选DirectInput,然后OuterXPathString是我们查询XML的节点语法,这里填/ArrayOfString/*,它表示查询XML数据中的ArrayOfString这个节点下的所有节点,具体的XPath语法可以参考XPath 教程。 切换到变量映射面板,这里新建一个变量保存每次循环取到节点的时候,节点里的值。这样,Foreach循环容器设置就完成了。 信息输出 为方便演示,我就不连接数据库了,把获取到的信息显示出来就好了。将一个脚本任务拖入到Foreach循环容器里面。双击打开编辑器,脚本类型这里用的VBA,然后新建了连个变量:ID,InfoStr,ID是每次循环的下标值,依次加1,InfoStr保存组合成的信息值。然后在ReadWriteVariables里添加进来。点击【编辑脚本】,打开脚本编辑器,输入处理代码。 最后将组合信息字符串输出,还是拖入一个脚本任务,编辑器设置如下: 最后执行包任务,可以看到输出的信息。 转载请注明出处(http://www.c-xuan.com/SSIS-XMLTask-ProcessArrays) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – 仅在执行结束时触发SqlConnection InfoMessage
- ruby – 如何使用Capybara获取HTML表格行
- 正则表达式 – 有和没有斜杠
- ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决
- NAND Flash和NOR Flash的比较
- [Flex]Flex SDK 4(Gumbo)浅析SDK 4默认的Spark样式与Halo样
- iphone – arc4random随机数生成器
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(
- [Swift]LeetCode1144. 递减元素使数组呈锯齿状 | Decrease
- 了解PostgreSQL磁盘使用情况