学习webservice,就离不了WSDL文档,他是我们开发WebService的基础,虽说,现在现在有许多WebService的开源框架使得我们可以根据WSDL生成客户端代码,但是,了解WSDL文档的结构还是有必要的。闲话不多说,我们开始进入正题。

首先,我们看一份WSDL文档。

  1. This XML file does not appear to have any style information associated with it. The document tree is shown below.
  2. <!--
  3. Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01.
  4. -->
  5. <!--
  6. Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01.
  7. -->
  8. <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://server/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://server/" name="HelloWorldImplService">
  9. <types>
  10. <xsd:schema>
  11. <xsd:import namespace="http://server/" schemaLocation="http://localhost:8989/HelloWorld?xsd=1"/>
  12. </xsd:schema>
  13. </types>
  14. <message name="sayHello">
  15. <part name="parameters" element="tns:sayHello"/>
  16. </message>
  17. <message name="sayHelloResponse">
  18. <part name="parameters" element="tns:sayHelloResponse"/>
  19. </message>
  20. <portType name="HelloWorldImpl">
  21. <operation name="sayHello">
  22. <input wsam:Action="http://server/HelloWorldImpl/sayHelloRequest" message="tns:sayHello"/>
  23. <output wsam:Action="http://server/HelloWorldImpl/sayHelloResponse" message="tns:sayHelloResponse"/>
  24. </operation>
  25. </portType>
  26. <binding name="HelloWorldImplPortBinding" type="tns:HelloWorldImpl">
  27. <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
  28. <operation name="sayHello">
  29. <soap:operation soapAction=""/>
  30. <input>
  31. <soap:body use="literal"/>
  32. </input>
  33. <output>
  34. <soap:body use="literal"/>
  35. </output>
  36. </operation>
  37. </binding>
  38. <service name="HelloWorldImplService">
  39. <port name="HelloWorldImplPort" binding="tns:HelloWorldImplPortBinding">
  40. <soap:address location="http://localhost:8989/HelloWorld"/>
  41. </port>
  42. </service>
  43. </definitions>

这份文档就是我的上一篇文章,自己开发WebService的那个WSDL文档,咱们今天就以他为例进行讲解。

首先,对于一份WSDL文档,无论他多么复杂,都是由下面5个元素组成。

<types>  <message>  <portType>  <bingding>  <service>

首先,说一下,这个 <types> 它里面定义的是标签结构,在上述WSDL文档中的schema节点中的内容是

  1. <xsd:import namespace="http://server/" schemaLocation="http://localhost:8989/HelloWorld?xsd=1"/>
  2.  

就是说他有导入了一个xsd文件,我们可以在浏览器中访问这个schemaLocation,会出现下面的内容

  1. This XML file does not appear to have any style information associated with it. The document tree is shown below.
  2. <!--
  3. Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01.
  4. -->
  5. <xs:schema xmlns:tns="http://server/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://server/">
  6. <xs:element name="sayHello" type="tns:sayHello"/>
  7. <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
  8. <xs:complexType name="sayHello">
  9. <xs:sequence>
  10. <xs:element name="arg0" type="xs:string" minOccurs="0"/>
  11. </xs:sequence>
  12. </xs:complexType>
  13. <xs:complexType name="sayHelloResponse">
  14. <xs:sequence>
  15. <xs:element name="return" type="xs:string" minOccurs="0"/>
  16. </xs:sequence>
  17. </xs:complexType>
  18. </xs:schema>

首先他有一个元素叫做sayHello,他的结构应该是这样的

<sayHello>

<arg0>string</arg0>

</sayHello>

同样,元素 sayHelloResponse,他的结构应该是

<sayHelloResponse>

<return>string</return>

</sayHelloResponse>

在<types>中就是定义了上面的文件格式。

<message>  用来定义消息的结构 soap消息 ,part : 指定引用types中定义的标签片断

<portType>

portType: 用来定义服务器端的SEI 
operation : 用来指定SEI中的处理请求的方法 
input : 指定客户端应用传过来的数据, 会引用上面的定义的<message> 
output : 指定服务器端返回给客户端的数据, 会引用上面的定义的<message>

<bingding>

binding : 用于定义SEI的实现类 
type属性: 引用上面的<portType> 
<soap:binding style="document"> : 绑定的数据是一个document(xml) 
operation : 用来定义实现的方法 
<soap:operation style="document" /> 传输的是document(xml) 
input: 指定客户端应用传过来的数据 
<soap:body use="literal" /> : 文本数据 
output : 指定服务器端返回给客户端的数据 
<soap:body use="literal" /> : 文本数据

<service>

service : 一个webservice的容器

name属性: 它用一指定客户端容器类 
port : 用来指定一个服务器端处理请求的入口(就SEI的实现) 
binding属性: 引用上面定义的<binding> 
address : 当前webservice的请求地址 

明白了WSDL文档中的元素对应关系,我们就可以这么说,portType里写的是服务器端的“干”  ,bingding是客户端的“肉”,service 是帮助客户端来找到这个拥有服务端“干”的“肉”。

  1.  
  1.  

WSDL 文档解析的更多相关文章

  1. (二)发布第一个WebService服务与DSWL文档解析

    1. 编写接口 package service; import javax.jws.WebService; /** * 第一个webservice服务, * @WebService注解表示这是一个we ...

  2. JavaScript : DOM文档解析详解

    JavaScript DOM  文档解析 1.节点(node):来源于网络理论,代表网络中的一个连接点.网络是由节点构成的集合 <p title=“a gentle reminder”> ...

  3. ios-XML文档解析之SAX解析

    首先SAX解析xml *xml文档的格式特点是节点,大体思路是把每个最小的子节点作为对象的属性,每个最小子节点的'父'节点作为对象,将节点转化为对象,输出. 每个节点都是成对存在的,有开始有结束.有始 ...

  4. 【Web Service】WSDL文档

    WSDL文档仅仅是一个简单的XML文档. 它包含一系列描述某个web service的定义. WSDL WSDL 是基于 XML 的语言,用于描述 Web services 以及如何访问它们. WSD ...

  5. Android XML文档解析(一)——SAX解析

    ---------------------------------------------------------------------------------------------------- ...

  6. jsoup -- xml文档解析

    jsoup -- xml文档解析 修改 https://jsoup.org/cookbook/modifying-data/set-attributes https://jsoup.org/cookb ...

  7. iOS网络编程笔记——XML文档解析

    今天利用多余时间研究了一下XML文档解析,虽然现在移动端使用的数据格式基本为JSON格式,但是XML格式毕竟多年来一直在各种计算机语言之间使用,是一种老牌的经典的灵活的数据交换格式.所以我认为还是很有 ...

  8. 利用wsdl.exe自动将wsdl文档转换为C#代码

    1.获取完整的wsdl文档 获取下面这个博客中提到的wsdl http://www.cnblogs.com/LCCRNblog/p/3716406.html 将获取到的wsdl放到一个文本中,改后缀( ...

  9. webservice学习01:wsdl文档结构

    webservice学习01:wsdl文档结构 wsdl文档结构 WSDL文档示例 <wsdl:definitions xmlns:xsd="http://www.w3.org/200 ...

随机推荐

  1. 001.android初级篇之ToolBar

    官方的最新support library v7中提供了新的组件ToolBar,用来替代之前的ActionBar,实现更为弹性的设计在 material design 也对之做了名称的定义:App ba ...

  2. Cocos2d-JS特效

    Cocos2d-JS提供了很多特效,这些特效事实上属于间隔动作,特效类cc.GridAction类,也称为网格动作,它的类图如下图所示. 网格动作类图 网格动作cc.GridAction它有两个主要的 ...

  3. UI3_UITableViewDelete(多选)

    // AppDelegate.m // UI3_UITableViewDelete(多选) // // Created by zhangxueming on 15/7/14. // Copyright ...

  4. java集合(交集,并集,差集)

    说明:这里没有求差集的代码,有了交集和并集,差集=并集-交集       package com; import java.util.ArrayList; import java.util.HashS ...

  5. ASCII 码表

    下面的 ASCII 码表包含数值在0-127之间的字符的十进制.八进制以及十六进制表示. 十进制 八进制 十六进制 字符 描述 0 0 00 NUL   1 1 01 SOH start of hea ...

  6. Windows Phone 8.1开发:如何从ListView中,获取ScrollViewer对象

    在使用ListView作为信心呈现载体开发应用程序时,我们经常需要通过监视滚动条(ScrollViewer)的位置状态来完成一些交互逻辑.最直接的体现就是 延时加载,(上滑加载更多,下拉获取更新数据) ...

  7. 如何更改Json.NET的序列化规则

    我想要使序列化出来的JSON都是小写,可以通过建立 LowercaseContractResolver:DefaultContractResolver 来实现, 创建Custom ContractRe ...

  8. 安装php-posix

      1.安装php-posix 1 yum -y install php-process 2.验证是否安装上了 1 php -m|grep posix 1 posix  

  9. jexus 配置 学习

    http://www.linuxdot.net/ 1.禁止或允许某IP或IP段访问网站 A.只允许某些IP地址访问网站(白名单功能) 默认情况下,允许所有IP地址访问.如果手工设置IP地址白名单, 那 ...

  10. 用泛型的IEqualityComparer<T>接口去重复项

    提供者:porschev 题目:下列数据放在一个List中,当ID和Name都相同时,去掉重复数据 ID Name 1  张三 1  李三 1  小伟 1  李三  2  李四 2  李武 ----- ...