在Zeep中创建具有特定命名空间命名的xsd.Element

2024-09-27 09:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Zeep创建一个自定义SOAP头元素,Zeep使用多个名称空间。这样做时,它们被命名为ns0ns1等等。例如:

usernametoken_header = xsd.Element('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}UsernameToken', xsd.ComplexType([
    xsd.Attribute('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Id', xsd.String()),
    xsd.Element('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Username', xsd.String()),
    xsd.Element('{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Password', xsd.String())
    ]))

将有ns0代表wsse,有ns1代表wsu。现在,我想将它们重命名为这些值,但不重新定位名称空间声明。我也不想使用UsernameToken。我知道可以选择这样做:

client.set_ns_prefix('wsse', "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")

但这会将名称空间声明从使用它的第一个子节点重新定位到根节点。我不希望这种重新定位。有没有办法对名称空间进行就地重命名


Tags: org定位名称httpdocsstring空间element

热门问题