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

初始化Zeep客户端时收到无效XML内容的问题求助

解决Zeep初始化时XML标签不匹配的XMLSyntaxError问题

问题情况

初始化Zeep客户端的代码如下:

url = 'http://www.filmratings.com/Filmratings_CARA/WebCaraSearch/Service.asmx?wsdl'
client = Client(wsdl = url)

运行后出现错误:

XMLSyntaxError: Invalid XML content received (Opening and ending tag mismatch: p line 122 and ul, line 124, column 20)

尝试过相关的Zeep XML错误解决方案但未成功,刚接触Zeep库,不清楚如何修改XML解析器参数来适配这个格式有问题的WSDL。

解决方案

Zeep默认使用严格的XML解析器,遇到格式不规范的WSDL会直接报错。可以通过配置宽松模式的解析器来绕过这个问题,步骤如下:

  1. 导入所需模块:
from zeep import Client
from zeep.wsdl import Parser
from lxml import etree
  1. 创建支持错误恢复的宽松XML解析器:
# 开启恢复模式忽略语法错误,同时禁用实体解析保证安全
lenient_parser = etree.XMLParser(
    recover=True,
    resolve_entities=False,
    encoding='utf-8'
)
  1. 使用自定义解析器初始化Zeep客户端:
    方法一:手动解析WSDL后传入
import requests

# 获取WSDL内容并用宽松解析器处理
wsdl_content = requests.get(url).content
wsdl_tree = etree.fromstring(wsdl_content, parser=lenient_parser)
wsdl_parser = Parser(etree.tostring(wsdl_tree))

client = Client(wsdl=wsdl_parser)

方法二:直接将解析器传入Client

client = Client(
    wsdl=url,
    parser=Parser(lenient_parser)
)

说明

  • recover=True参数让lxml解析器尝试忽略XML语法错误继续解析,这是针对不规范WSDL的临时 workaround,并非修复WSDL本身的问题。
  • 如果仍有报错,可以尝试添加更多宽松参数,比如remove_blank_text=True或strip_cdata=False来进一步放宽解析规则。

内容的提问来源于stack exchange,提问作者Azamat Bagatov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:56:11