You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Zeep创建同时带属性和字符串值的自定义SOAP头xsd.Element

实现方法

你目前的写法错误是因为直接在ComplexType下混入字符串节点和属性不符合XSD的类型定义规则,这种包含文本值+属性、无其他子节点的XML元素,需要用xsd.SimpleContent对基础字符串类型做扩展,再追加属性定义。

正确实现代码如下:

from zeep import xsd

# 定义带属性的字符串简单内容类型
password_type = xsd.ComplexType(
    xsd.SimpleContent(
        [
            xsd.Extension(
                xsd.String(),
                [
                    xsd.Attribute('Type', xsd.String())
                ]
            )
        ]
    )
)

# 定义Password元素,绑定类型,可根据实际需求调整命名空间
password_header = xsd.Element(
    '{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Password',
    password_type
)

# 实例化生成目标节点
password_value = password_header(_value_='StringPasswordValue', Type='StringAttribute')

相关说明:

  • 实例化时文本值必须通过_value_参数传递,这是Zeep对简单内容扩展类型的固定传参规则
  • 无需调用wsse内置的UsernameToken结构,自定义元素即可满足需求
  • 生成的XML结构完全匹配需求的<wsse:Password Type="StringAttribute">StringPasswordValue</wsse:Password>格式

内容的提问来源于stack exchange,提问作者Halvor Holsten Strand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:15:02