尝试访问WSDL服务时,出现以下错误:
ValueError: Invalid tag name 'Foo\\Bar\\Baz\\Etc\\V3Port'
通过WSDL链接提供的端口实际上只有一个反斜杠:'Foo \ Bar \ Baz \ Etc \ V3Port'
当zeep调用lxml库中的apihelpers.pxi方法时,会引发ValueError。
有什么主意我可以解决这个问题吗?
(顺便说一句:两个月前我使用脚本时,脚本工作正常。WSDL链接未更改)
答案 0 :(得分:0)
我找到了解决方法
在此之前,这已经足够:
from zeep import Client
现在,显然,我需要显式添加:
from lxml import etree
一切正常。
答案 1 :(得分:0)
Zeep 也不喜欢值中的“/”。每当它在值中找到它不喜欢的任何字符时,它都会给出无效的标签名称错误。对于所有此类错误,您需要修改位于 zeep 库根文件夹中的 utils.py 中的 as_qname 函数。
就我而言,它抱怨“/”的值,这是一个有效值。我必须在 as_qname 函数中添加以下行。
value = value.replace("/", "-")
下面是修改后的as_qname的前几行
def as_qname(value: str, nsmap, target_namespace=None) -> etree.QName:
"""Convert the given value to a QName"""
value = value.strip() # some xsd's contain leading/trailing spaces
value = value.replace("/", "-") # Added by me.
if ":" in value:
prefix, local = value.split(":")