在 SSIS 中使用 Web Service 以及 解析 XML 数据

本贴最后更新于 3142 天前,其中的信息可能已经时移世改

Web Service 简介

Web Service 是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的 web 应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过 web 调用。Web Service 是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问 Web Service,通过 Web Service 内部执行得到所需结果.Web Service 可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他 Web Service 应用程序可以发现并调用它部署的服务。

技术和规则

在构建和使用 Web Service 时,主要用到以下几个关键的技术和规则:

  • 1.XML:描述数据的标准方法.
  • 2.SOAP:表示信息交换的协议.
  • 3.WSDL:Web 服务描述语言.
  • 4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于 XML 语言的用于在互联网上描述商务的协议。

实际上,WebService 的主要目标是跨平台的可互操作性。为了达到这一目标,WebService 完全基于 XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。由此可以看出,在以下三种情况下,使用 WebService 会带来极大的好处。

示例说明

本示例将调用美国一个查询城市编码的 Webservice 接口,将查询到的信息保存到我们自己数据库的表中。
http://www.webservicex.net/uszip.asmx 是一个查询美国城市编码信息的 Webservice 接口,例如我们点击 GetInfoByCity 方法,输入 New York,调用后返回 XML 格式的文件。

SSIS-Web-Service-4.jpg

SSIS-Web-Service-5.jpg

SSIS-Web-Service-6.jpg

实现步骤

添加 HTTP 链接管理器

新建 SSIS 项目后,在连接管理器中右键选择【新建连接】,弹出的管理器类型面板中选择 HTTP,点击添加后出现 HTTP 连接管理器面板,服务器 URL 填:http://www.webservicex.net/uszip.asmx?WSDL,注意,末尾要加上 ?WSDL 参数。单击【测试按钮】,测试连接成功后单击【确定】关闭对话框。

SSIS-Web-Service-1.jpg

SSIS-Web-Service-2.jpg

SSIS-Web-Service-3.jpg

设置 Web 服务任务控件

拖入 Web 服务任务控件,双击后打开 Web 服务任务编辑器,常规面板中,连接选择我们刚刚建的 HTTP 连接,WSDLFile 需要我们自己建一个,OverwriteWSDLFile 选项为 true.之后单击【下载 WSDL】按钮,如果不单击这个,后面就会报错的。

SSIS-Web-Service-7.jpg

切换到输入面板,在 Service 选择 USZip,Method 中有四个方法可以选,这里用 GetInfoByCity,如果上面一步没有点击下载 WSDL 按钮的话,这里就选不了,要报错的。选完后下面那栏说明出现中文乱码,不用管它。参数赋值里面我就直接给了一个 New York,当然也可以勾上变量复选框,用自己定义的包变量。

SSIS-Web-Service-8.jpg

切换到输出面板,输出类型可以选择文件或者是变量,这里我选了文件,把返回的 XML 保存在新建的 XML 文件里。

SSIS-Web-Service-9.jpg

执行下 Web 服务任务,返回的 XML 格式数据就保存在里文件里。这里要执行一下任务,让 XML 文件里有数据,为后面步骤做准备。

SSIS-Web-Service-10.jpg

数据流任务部分

控制流中拖入数据流任务,在数据流任务中拖入 XML 源控件,双击打开 XML 源编辑器,XML 位置选择上面步骤创建的 XML 文件,然后点击【生成 XSD】,输入一个 XSD 文件名,这个文件是用来生成对 XML 结构说明的。

SSIS-Web-Service-11.jpg

SSIS-Web-Service-12.jpg

切换到列面板,如果出现提示,单击【确定】。这里就会出现对 XSD 文件解析出要生成的列了。

SSIS-Web-Service-13.jpg

SSIS-Web-Service-14.jpg

数据流中拖入 OLEDB 目标控件,选择新建一个表。切换到列映射,可以编辑对应的输入输出列,这里默认就可以了。

SSIS-Web-Service-15.jpg

SSIS-Web-Service-16.jpg

至此,所有任务就建好了,执行一下包,看看数据库中的表是否有数据了。

SSIS-Web-Service-17.jpg

SSIS-Web-Service-18.jpg

总结

  • 1.HTTP 连接部分的 URL 要带上?WSDL 参数。
  • 2.Web 服务编辑器常规面板配置好 WSDL 文件后要先下载 WSDL。
  • 3.Web 服务编辑器输出面板中,也可以把返回的 XML 数据保存在一个变量里,在后面的 XML 源中调用,但是我试了不成功,还不清楚问题出在哪。
  • 4.XML 源编辑器里,要生成 XSD 文件,这个貌似对于比较标准的 XML 文件可以生成,我后来试了个其它 Webservice 的接口调用返回 XML 文件,里面有两个命名空间,然后生成 XSD 就报错了。
  • 5.最后一点也是耗费我最多时间的问题,我后来想调用国家天气查询的 Webservice 接口,但是返回的 XML 文件是带有数组类型的,像下图那样,这样的话用本文的做法生成 XSD 那里可以生成,但是只会出现 string 一列,写入数据库的表里只有 string 一列而且字段值都是 NULL。所以要另外进行一些处理,这在后面的另一篇文章(SSIS 中 Foreach 循环容器处理 XML 数据)里介绍。

SSIS-Web-Service-19.jpg

转载请注明出处(http://www.c-xuan.com/SSIS-Web-Service)

  • BI
    5 引用 • 6 回帖
  • SSIS
    2 引用 • 3 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...