Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/osirium/suds
漏洞分析脚本与自动化API安全测试Web安全实用工具与框架API 安全
GitHubosirium/suds

suds

克隆自 suds 0.4 + suds-0.4-CVE-2013-2217.patch

查看仓库
1028年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
概述

"Suds" 网络服务客户端是一个基于SOAP的轻量级Python客户端,采用LGPL许可证发布。

详细信息请访问:

  * 项目站点:https://fedorahosted.org/suds/
  * 文档:https://fedorahosted.org/suds/wiki/Documentation
  * Epydocs:http://jortel.fedorapeople.org/suds/doc/
   

版本发布说明:
=================================================

版本 0.3.6 (04-31-09):
  * 将硬编码的 /tmp/suds 改为 tempfile.gettempdir() 并按需创建 suds/ 目录。
  * 修复 Any.get_attribute() 的返回类型。
  * 更新 HTTP 缓存以忽略 file:// 网址。
  * 当仅注入回复时,更好地记录消息。
  * 修复 XInteger 和 XFloat 类型以正确转换返回的数组。
  * 修复同命名空间的 xs:import schema。
  * 更新解析器以不加载外部引用,并为 XMLSchema.xsd 位置添加 Import.bind()。
  * 添加 schema doctor - 用于在运行时修补 XSD。(参见 Option.doctor)
  * 修复 Python 2.6 中的弃用警告。
  * 为 <element/> 上定义的 @default 添加行为。
  * 更改 @xsi:type 的值,使其始终限定于 doc/literal。(还原 0.3.5 的更改)。
  * 添加 Option.xstq 选项以控制 @xsi:type 何时被限定。
  * 已修复的问题: #64, #129, #205, #206, #217, #221, #222, #224, #225, #228, #229, #230 

版本 0.3.5 (04-16-09):
  * 添加 HTTP 缓存。默认缓存期为 1 天。不适用于方法调用。详见文档。
  * 移除了 spec 中对 fedora 版本的检查,因为不再构建低于 fc9 的版本。
  * 更新 Makefile,使用 tar.sh 打包。
  * 将 bare/wrapped 的判断移至 wsdl 中以处理 document/literal。
  * 将 Transport 重构为一个包(提供更好的 HTTP 头部日志)。
  * 已修复的问题: #207, #209, #210, #212, #214, #215 

版本 0.3.4 (02-24-09):
  * 静态(自动)Import.bind('http://schemas.xmlsoap.org/soap/encoding/'),用户不再需要手动执行。
  * 基本的 ws-security,支持 {{{UsernameToken}}} 和明文密码。
  * 通过传递字典支持“稀疏”的 SOAP 头部。
  * 支持任意用户自定义的 SOAP 头部。
  * 修复包含多个 SOAP 头部条目的服务操作。
  * Schema 加载和去引用算法增强。
  * 修复嵌套的 SOAP multiref。
  * 更好地(真正地)支持 elementFormDefault="unqualified",提供更精确的命名空间处理。
  * WSDL part 类型不再默认为 WSDL 的目标命名空间。
  * 已修复的问题: #4, #6, #21, #32, #62, #66, #71, #72, #114, #155, #201。

版本 0.3.3 (11-31-08):
  * 不再安装 (tests) 包。
  * 实现 API-3 提案 ( https://fedorahosted.org/suds/wiki/Api3Proposal )
     - 可插拔的传输
    - 关键字方法参数
    - 默认传输中的基本 HTTP 认证
  * 在 SOAP 消息中添加命名空间前缀规范化。
  * 更好地修剪 SOAP 消息中的空节点。
  * 已修复的问题: #51 - #60

  
版本 0.3.2 (11-7-08):
  * SOAP {{{MultiRef}}} 支持 ''(首次实现于 r300)''
  * 添加对新 schema 标签的支持:
     * <xs:include/>
     * <xs:simpleContent/>
     * <xs:group/>
     * <xs:attributeGroup/>
  * 添加新的 xs <--> python 类型转换支持:
     * xs:int
     * xs:long
     * xs:float
     * xs:double
  * 修订编组器和绑定,进一步优化生成的节点的命名空间。
  * 修复了 ''xsd'' 包中 dereference() 在 schema 加载时的无限递归。
  * 添加对 <wsdl:import/> 将 schema 文件导入到 wsdl 根 <definitions/> 的支持。
  * 修复 (&) 的双重编码。
  * 添加 Client API:
     * setheaders() - 与关键字相同,但适用于所有调用。
     * addprefix() - 命名空间前缀的映射。
    * setlocation() - 覆盖 wsdl 中的位置;与关键字相同,但适用于所有调用。
    * setproxy() - 与 proxy 关键字相同,但适用于所有调用。
  * 为 SOAP 头部添加正确的命名空间前缀。
  * 已修复的问题: #5, #12, #34, #37, #40, #44, #45, #46, #48, #49, #50, #51

  
版本 0.3.1 (10-1-08):

 * 快速跟进 0.3 版本,该版本使得处理多端口服务定义变得比必要更困难。经过考虑(以及一夜好眠),
   显然一些更改会使这变得更容易:1)过滤掉非 SOAP 绑定——它们才是真正的问题所在;2)由于大多数服务器
   对任何 SOAP 绑定(soap 1.1 和 1.2)都能正常工作,因此在不指定端口的情况下调用方法时,含糊的方法引用
   在几乎所有情况下都能正常工作。那么,为什么不让 suds 自行选择端口呢?在非必要的情况下,不要让用户去指定。
   大多数情况下,使用 0.2.9 及更早版本的用户在迁移到 0.3.1 时不必像在 0.3 中那样更新代码。

    
版本 0.3 (9-30-08):

  * 扩展了 0.2.9 中引入的多端口服务支持。此次新增功能支持多个服务定义 *相同* 的方法,suds 将正确处理。
    请参见 '多端口服务' 一节。
     
  * 添加对多文档 document/literal soap 绑定样式的支持。
    请参见 '多文档 Document/Literal' 一节。
  
  * 添加对 (xs:group, xs:attributeGroup) 标签的支持。
  
  * 添加 Client.last_sent() 和 Client.last_received()。
    
版本 0.2.9 (9-09-08):
   
   * 支持服务中的多个端口。
   * 属性引用 <xs:attribute ref=""/>
   * 使 sax 包中的 XML 特殊字符编码器可插拔。


版本 0.2.8 (8-28-08):

   * 更新 document/literal 绑定,始终发送由 <part/> 引用的文档根元素。
     在又一次仔细审查空间和用户输入后,似乎被引用的元素始终是文档根元素。

   * 添加对 'binding' schemaLocation 到 namespace-uri 的支持。
     这是针对那些没有指定 schemaLocation 但仍期望下载 schema 的导入。例如:Axis 引用了 'http://schemas.xmlsoap.org/soap/encoding/' 
     但没有提供 schemaLocation。因此,通过执行:
        >
        > from suds.xsd.sxbasic import Import.
        > Import.bind('http://schemas.xmlsoap.org/soap/encoding/')
        >
     该 schema 被绑定到一个 schemaLocation 并被下载。

   * 基本解编组器不再需要 /schema/。
     在重构期间本应移除但遗漏了。

   * 更新客户端,将 kwargs 传递给 send(),并添加 /location/ kwarg 用于覆盖 wsdl 中的服务位置。

   * 更新编组器,不为表示 *同时* 为可选且值为 None 的元素和/或属性的对象属性生成 XML。
         * 更新工厂(构造器)以包含所有属性。
         * 向 SchemaObject 添加 optional() 方法。

   * 更新 wsdl,在指定了命名空间时覆盖操作中的命名空间。
   
   * 修复 schema 加载问题——在处理导入前构建所有 schema。
   
   * 更新打包,为提交到 fedora 做准备。

      
版本 0.2.7 (8-11-08):

   * 添加对 document/literal(包裹和未包裹)的检测/支持。
   * 更新 document/literal {包裹},将文档根元素(位于 <body/> 下)设置为包裹元素(带有适当命名空间)。
   * 添加对具有 maxOccurs 的 <sequence/>、<all/> 和 <choice/> 的支持,使解编组器将包含在无界集合中的元素的值设置为列表。
   * 更新 client.factory(构造器)以省略 <choice/> 的子元素,因为用户真正需要决定包含哪些子元素。
   * 更新展平算法,防止重新展平来自导入 schema 的类型。
   * 对展平/合并算法的调整。
   

版本 0.2.6 (8-5-08):

   * 修复在 xsd 包大修期间损坏的 ENUM。
   * 根据 ticket #24 修复类型。
   * 根据 ticket #30 报告,修复方法签名中的重复参数名。
   * Suds 以 LGPL 许可发布。
   * 根据 ticket #31 的补丁建议,移除 suds.__init__() 中的日志配置。用户现在需要自行配置日志记录器。
   * 添加对 Client.Factory.create() 替代语法的支持:使用 {namespace}name 格式完全限定要构建的类型。
     例如:client.factory.create('{http://blabla.com/ns}Person')


版本 0.2.5 (8-01-08):

   * 对 (XSD) 包进行了大修。这种新的(合并)方法更简单,应该更可靠且更易维护。同时,由于合并后的 schema
     通过字典查找进行查找,性能应会更好。
     
     此次大修应能修复当前的 TypeNotFound 和 <xs:extension/> 问题,希望如此 :-)。
      
   * 修复 dateTime 打印错误。

   * 为 builder.Builder 添加了针对自包含 xs 类型的无限递归预防。


版本 0.2.4 (7-28-08):

   * 添加对 WSDL 导入的支持:<wsdl:import/>
   * 添加 xs 到 python 类型转换的支持(感谢:Nathan Van Gheem):
      * xs:date
      * xs:time
      * xs:dateTime
   * 修复的问题:
      * Bug:带有 schemaLocation 的 Schema <import/>
      * Bug:服务描述中指定的命名空间在打印 client/proxy 之前无效。


版本 0.2.3 (7-23-08):

   * 优化。


版本 0.2.2 (7-8-08):

   * 更新异常,通过使用 Exception.__init__() 设置 Exception.message 使其更符合标准的 Python 风格,如 ticket #14 所建议;更新绑定以引发 WebFault 并传递 (p)
   
   * 在绑定中添加处理返回值中多个根节点的能力;以复合对象形式返回,与返回列表时不同。
   
   * 修复 soapAction 未被引号括起的问题。
   
   * 添加对 <xs:all/> 的支持。
   
   * 修复 SchemaObject 中的 unbounded() 方法。
   
   * 将 schema 重构为新的 (xsd) 包。文件变得太大。向 Query 添加 execute() 方法,并改进 suds 使用 execute() 查询而不是直接使用 Schema.find()。
     同时,将 schema 中简陋的 start() 方法以及查询递增逻辑移出。
   
   * 添加 inject 关键字,用于注入传出的 SOAP 消息和/或传入的回复消息。
     重构 SoapClient 并:
        1) 将 send() 重命名为 invoke()
        2) 将消息发送从 invoke() 中分离,放入 send();
     添加 TestClient,允许在调用 kwargs 中使用 inject={'msg=, reply='} 进行消息和回复注入。
     
   * 在 sax 中添加 Namespace 类,以更好地管理命名空间行为;
     改进 suds 以导入并使用 Namespace。
   
   * 更改用于解析引用类型(具有 @base="",@type="" 属性)的默认命名空间,以便在未指定前缀时使用 XML(节点)命名空间而非 targetNamespace。
   
   * 按照 [email protected] 在 ticket #13 中的定义应用修复。
   
   * 更新服务定义,以 " my_method(xs:int arg0, Person arg1) " 的形式显示服务方法,而不是
     " my_method(arg0{xs:int}, arg1{Person}) ",这更接近传统的方法签名。
   
   * 向解编组器添加 xsd/python 类型转换(仅 XBoolean);重构解编组器以使用 Content 类,这使 API 更简洁,
     增加了编组器与解编组器之间的对称性,并为基于 schema 属性的类型转换提供了良好的机制。
   
   * 使用 Appenders 重构编组器;向 resolve() 添加 nobuiltin 标志,以支持绑定中 returned_type() 和 returned_collection() 的修复。
   
   * 添加对 (202,204) HTTP 状态码的支持。
   
   * 添加 XBoolean 和映射;向 TreeResolver 添加 findattr() 以为类型转换做准备。
   
   * 更新 schema 和 schema 属性加载(停止深度递归);更改导入的 schema,使其不再复制导入的 schema,
     而是由导入代理将查找请求代理出去;添加 ServiceDefinition 类,提供更好的服务检查;同时提供命名空间映射并显示类型;
     schema 属性 API 简化;添加对 xs:any 和 xs:anyType 的支持;修复一些 schema 查找问题;对绑定类进行轻微重构;
     添加大量调试日志(可能需要注释掉部分以提升性能,某些参数非常昂贵)。
   
   * 添加 sudsobject.Property;属性是一个特殊的 Object,包含一个 (value) 属性,由构建器(工厂)返回给没有子元素的 schema 类型,
     如 <element/> 和 <simpleType/>;更新构建器、编组器和解析器以处理属性;同时更新解析器和 schema 以处理属性查找(之前缺失)。
   
   * 为用户定义的 SOAP 头部打下基础。
   
   * 根据 ticket #7 修复 elementFormDefault。
   
   * 从绑定中移除未使用的 kwargs;在 wsdl 中缓存绑定;改进旧的 ServiceProxy 以委托给新的 Client API;
     移除 nil_supported 关键字,改为通过 schema 中 <element/> 的 'nillable' 属性自然处理。
   
   * 添加对 <element/> 属性标志(nillable 和 form)的支持。
   
   * 添加 Proxy(第二代 API)类。
   
   * 添加访问器/转换函数,使用户无需访问 __x__ 属性。
     同时添加 todict() 和 get_items() 以便于转换为字典和迭代。
   
   * 在搜索引用时,先查找顶级元素的 @ref,然后再深入搜索。
   
   * 向 SchemaObject 添加 derived()。这是为了确保所有派生类型(wsdl 类)都通过 xsi:type 限定,
     而不必像 suds 早期版本那样为所有自定义类型手动指定 xsi:type。更新 literal 编组器,仅当需要指定类型时才添加 xsi:type。
   
   * 更改 sax 中的 ns 提升,防止在父节点已有该前缀时将其提升到父节点。
   
   * 将绑定中的 returned_type() 更改为返回(未解析的)Element。
   
   * 为了支持新功能并修复报告的错误,我正在进行 Suds 中提供输入/输出翻译的组件的重构和进化:
   
     * Builder(翻译:XSD 对象 => python 对象)
     * Marshaller(翻译:python 对象 => XML/SOAP)
     * Unmarshaller(翻译:soap/xml => python 对象)
   
     这次进化将在这些组件之间提供更好的对称性,如下所示:
   
     Builder 和 Unmarshaller 将生成 python 对象(sudsobject.Object 的子类),这些对象具有:
   
     *  __metadata__.__type__ = XSD 类型 (SchemaObject)
     * 子类名称 ( __class__.__name__ ) = schema 类型名称。
   
     并且
   
     Marshaller(s) 在消费 Builder 或 Unmarshaller 生成的 python 对象时,将利用这些标准信息来生成适当的输出(XML/SOAP)。
   
     0.2.1 的代码 *大致* 如此,但……并非完全如此。此外,实现中存在一些冗余。
   
     在此过程中,将 Builder、Marshaller 和 Unmarshaller 类中常用的 schema 类型“查找”功能提取到一组“Resolver”类中是有意义的。这降低了 Builder、Marshaller 和 Unmarshaller 类的复杂性和冗余,并允许更好的模块化。一旦重构完成,literal/encoded Marshaller 之间的差异变得非常小。鉴于 bindings.literal 和 bindings.encoded 包中的代码量已经很小(并且还在变小),并且为了保持 Suds 代码库紧凑,我将所有编组类移到了 bindings.marshaller 模块。bindings.XX 子包将被移除。
   
     最终效果:
   
     Suds 的所有主要组件:
   
     * client(旧的服务代理)
     * wsdl
       * schema(xsd 包)
       * resolvers
     * output(编组)
     * builder
     * input(解编组)
   
     现在具有更好的:
   
      * 模块性
      * 关于 Object 元数据的对称性
      * 代码复用(希望代码重复率低于 1%)
      * 更松散的耦合
   
     ……并更好地支持以下功能/错误修复:
   
     *(修复)基于 <schema elementFormDefault=""/> 属性的正确元素限定级别。这将确保当 elementFormDefault="qualified" 时,Suds 会为 literal 和 encoded 绑定在根元素上包含正确的命名空间。为了使这一点正常工作,literal 编组器(就像 encoded 编组器一样)需要感知 schema 类型。如果我没有采用上述重构而是向 literal 编组器添加与 encoded 编组器相同的 schema 类型查找,那么这两个类几乎会完全重复 :-(
   
   * Builder 和 Unmarshaller 使用 schema.Schema.find() 来解析 schema 类型。它们构建一个类似 "person.name.first" 的路径来在适当的上下文中解析类型。由于 Schema.find() 是无状态的,它在每次调用时都会解析中间的路径元素。新的 resolver 类是有状态的,并且以 *更高* 的效率解析子类型。
   
   * 防止 sudsobject.Object 中的名称冲突,例如 items() 方法。我将所有方法(包括类方法)移到了一个 Factory 类中,该类作为类属性 ( __factory__ ) 包含在 Object 类中。现在 *所有* 属性都遵循 Python 内置命名约定,我们不应该再有名称冲突。当然,这假设没有 wsdl/schema 实体名称会与 Python 内置命名约定冲突,但我必须在某个地方划清界限 :-)
     

版本 0.2.1 (5-8-08):

   * 更新 schema.py 的 SchemaProperty 加载顺序,使 schema 分 3 步加载:
         1) 构建原始树。
         2) 解析诸如 @ref 和 @base 的依赖。
         3) 根据需要提升孙节点以展平(反规范化)树。
         
       wsdl 也被修改为仅加载 schema 一次并存储它。schema 集合被修改为分 2 步加载 schema:
         1) 创建所有原始 schema 对象。
         2) 加载 schema。
       
       这确保了当本地 <import/> 的 schema 被乱序引用时,可以找到它们。
       sax.py 的 Element 接口已更改:attribute() 被 get() 和 set() 取代。
       此外,可以使用 __getitem__ 和 __setitem__ 访问属性值。
       sax.py 的 Epydocs 已更新。并且……最后 <element ref=/> 现在被正确支持。

   * 修复日志记录:不要在 suds.__init__.logger() 中设置为 INFO;仅在根记录器上设置处理程序;
     将记录器 (log) 从类移至模块,并使用 __name__ 作为记录器名称。
     注意:这意味着要启用 SOAP 消息日志记录,需执行:
           >
           > logging.getLogger('suds.serviceproxy').setLevel(logging.DEBUG)
           > 
         -- 而不是 --
           >
           > logging.getLogger('serviceproxy').setLevel(logging.DEBUG)
           >
      
   * 添加对 (xsd) schema <attribute/> 节点的支持,这主要影响 Builder 返回的对象。
   
   * 更新 serviceproxy.py:set_proxies() 以记录 DEBUG 而不是 INFO。
   
   * 增强 schema __str__ 以同时显示原始 XML 和模型(主要用于调试)。


版本 0.2 (04-28-08):

  * 包含 rpc/encoded SOAP 样式的首次实现。
 
  * 用 suds.sudsobject.Object 替换 Property 类。Property 类是很久以前开发的,目的略有不同。
     suds 的 Object 是一种更简单(更直接)的方法,需要更少的代码,并且在调试器中工作得更好。

  * 绑定(和编码)是按方法选择的,这与 wsdl 更一致。在 <= 0.1.7 中,绑定是在构造 ServiceProxy 时选择的,并用于所有服务方法。
     绑定被存储为 self.binding。由于 WSDL 允许每个操作有不同的绑定样式和编码,Suds 需要以相同的方式工作。* `(nil_supported)` 和 `(faults)` 标志通过 **kwargs 传递给服务代理。除了这些标志外,还添加了 `(http_proxy)` 标志,并传递给 urllib2.Request 对象。支持以下参数:
  * `faults` = 引发服务器引发的故障(默认:True),否则从服务方法调用返回元组 (http code, object)。
  * `nil_supported` = 绑定将在值为 None 的节点上设置 xsi:nil="true",当此标志为 True 时(默认:True)。否则,发送空节点 `<x/>`。
  * `proxy` = 请求中指定的 http 代理(默认:{})。代理定义为 {protocol:proxy,}

* 支持 Http 代理(见上文)。

* ServiceProxy 重构为委托给 SoapClient。由于服务代理通过 getattr() 公开 Web 服务,因此 ServiceProxy 类提供的任何属性(包括方法)都会隐藏 wsdl 定义的操作。因此,通过将所有内容移动到 SoapClient,wsdl 操作不再被隐藏,而无需在服务代理中使用 *hoky* 名称。相反,服务代理具有 `__client__` 和 `__factory__` 属性(实际上这些属性名称冲突风险很低)。目前,`get_instance()` 和 `get_enum()` 方法尚未移动以保持向后兼容性。不过,推荐的 API 变更应该是将:

  > service = ServiceProxy('myurl')
  > person = service.get_instance('person')

  ... 替换为类似 ...

  > service = ServiceProxy('myurl')
  > person = service.__factory__.get_instance('person')

  经过几个版本,给用户时间切换到新 API 后,`get_instance()` 和 `get_enum()` 方法可能会被移除,届时会以大字通知。

* 修复了 wsdl 未定义 `<schema/>` 部分时,Suds 无法解析 `http://www.w3.org/2001/XMLSchema` 命名空间的前缀以检测内置类型(如 xs:string)的问题。

version-0.1.7 (04-08-08):

* 添加了 Binding.nil_supported 来控制属性值(输出)为 None 和空标签(输入)的处理方式。
  * service.binding.nil_supported = True —— 表示属性值 = None 在输出时会被编组为 `<x xsi:nil=true/>`,而 `<x/>` 会被解组为 '',`<x xsi:nil/>` 会被解组为 None。
  * service.binding.nil_supported = False —— 表示属性值 = None 在输出时会被编组为 `<x/>`,并且 `<x/>` *和* `<x xsi:nil=true/>` 都会被解组为 None。xsi:nil 实际上被忽略。
  * 默认值为(True)

* Sax 处理器更新为处理 sax 解析器“分块”文本时的多个 character() 回调。当 node.text 为 None 时,将 node.text 设置为字符。否则,将字符追加。感谢 - [email protected]

* 将特殊的 (text) 属性替换为 `__text__`,以允许名为 "text" 的自然元素。

* 通过以下方式添加 unicode 支持:
  * 为所有具有 `__str__` 的类添加 `__unicode__`。
  * 将所有 str() 调用替换为 unicode()。
  * `__str__()` 返回 `__unicode__` 的 UTF-8 编码结果。

* XML 输出编码为 UTF-8,与 HTTP 头部匹配并支持 unicode。

* SchemaCollection 更改为提供 builtin() 和 custom() 方法。为了支持这一点,在 sax.py 的 Element 中添加了 findPrefixes() 方法。无论如何,这是一种更好的方法,因为 wsdl 和 schema 可能有许多指向 `http://www.w3.org/2001/XMLSchema` 的前缀。已在 doc/lit 和 rpc/lit 绑定上进行了测试。

* 重构了绑定包,从 document & rpc 改为 literal & encoded。

* 包含 *完整* 命名空间支持的完成,具体如下:

  * 不再从引用 wsdl 中定义类型的属性值中剥离命名空间前缀。
  * 使用 `<import/>` 导入的 Schema 应正确处理命名空间和前缀的映射以及根据需要重新映射。
  * 所有类型都使用完全限定(带命名空间)的查找来解析。
  * Schema.get_type() 支持带和不带 ns 前缀的路径。当未指定前缀时,使用 schema 的目标命名空间匹配类型。

* Property 按添加顺序维护属性名称(键)。这也意味着 get_item() 和 get_names() 返回有序的值。
  (不过,我怀疑排序实际上应该在编组器中根据 wsdl/schema 中指定的顺序进行)

对 schema.py 进行了重大重构。主要目标是为通过命名空间完全限定的类型查找做准备。完成后,属性值上的前缀将不再被剥离(清除)。
变更摘要:
  1) SchemaProperty 覆盖类在 `__init__` 时创建,而不是按需创建。
  2) schema 导入由新的 Import 类执行,而不是由 Schema 执行。
  3) Schema 使用工厂加载顶级属性。
  4) 所有 SchemaProperty /children/ 列表在 SchemaProperty 派生类中按 `__cmp__` 排序。这确保具有相同名称的类型按以下顺序解析(Import, Complex, Simple, Element)。
  5) 所有 /children/ SchemaProperty 列表在 `__init__` 时构建,而不是按需构建。
  6) 创建了 SchemaGroup 并更新了 WSDL 类。这比让 wsdl 聚合 `<schema/>` 节点效果更好,因为后者会切断与具有命名空间前缀映射的 wsdl 父元素的链接。
  7) `<import/>` 元素被正确处理,执行了对导入 schema 的 targetNamespace 和关联前缀映射的命名空间重新映射和前缀重新映射。
     例如:SCHEMA-A 有前缀 (tns) 映射为 xmlns:tns=http://nsA,并且 targetNamespace=http://nsA。
     SCHEMA-B 正在导入 schema A,并且有前缀 (abc) 映射为 xmlns:abc=http://nsABC。
     SCHEMA-B 导入 A 为 `<import namespace=http://nsB xxx schemaLocation=http://nsA/schema-a.xsd>`。
     因此,由于 SCHEMA-B 将使用前缀 (abc) 引用 SCHEMA-A 的元素,例如 abc:something,所以 SCHEMA-A 的 targetNamespace 必须更新为 http://nsABC,并且所有 type=tns:something 的元素必须更新为 type=abc:something,以便能够解析。

* 修复了属性中节点以 (text, value) 形式添加时导致的解组问题。该问题是在重构绑定引入的。

* 修复了各种 Property 打印问题。

注意:

感谢 Coniuro 的 Jesper Noehr 提供了大部分 rpc/literal 绑定,并在 #suds 讨论中进行了大量合作。

version-0.1.6 (03-06-08):

* 正确处理包含 xsd schema 导入的 wsdl:`<import namespace="" schemaLocation=""?>`。当指定了 schemaLocation 时,会导入引用的 schema。
* 对尚未处理的 http 状态码引发异常。

version-0.1.5 (02-21-08):

* 在模块中提供更好的日志记录,通过分层名称获取记录器。
* 根据需要进行重构,以真正支持其他绑定。
* 添加 sax 模块,替代 ElementTree。这更快、更简单,并且正确处理命名空间(前缀)。

version-0.1.4 (12-21-07):

* 支持服务方法参数为 None。
* 添加对作为属性对象列表的方法参数的正确处理。

version-0.1.3 (12-19-07):

* 修复了标记为集合(maxOccurs > 1)的节点在 DocumentReader 映射输入值时(如果值少于 2 个)无法创建值为 [] 的属性对象的问题。这是由于缺少 bindings.Document.ReplyHint.stripns()(使用 DocumentReader.stripns())到 DocumentReader.stripn() 的转换所致,后者自 0.1.2 版本起返回元组 (ns,tag)。

version-0.1.2 (12-18-07):

此版本包含对 property 的更新,新增了:
  * 元数据支持
  * 覆盖:`__getitem__`, `__setitem__`, `__contans__`
  * 更改 property(reader|writer) 使用 property.metadata 处理 XML 文档的命名空间。
  * 修复 setup.py 的 requires。

version-0.1.1 (12-17-07):

此版本标志着在 fedora 托管下的第一个版本。
下载工具