如何用Python的LXML和Requests获取SOAP响应的Status属性
解决SOAP响应中获取PlexViewResponse属性的问题
核心解决思路
要获取<api:PlexViewResponse>的Status属性以及可能存在的Error属性,关键是先通过命名空间定位到该元素,再用元素的get()方法读取属性——这个方法能安全处理属性不存在的情况(返回None),不用额外做异常捕获。
完整代码示例
结合你已有的代码,补充后的实现如下:
# 设置命名空间 nsmap = {'api': 'http://alu.com/plexwebapi/api'} # 获取Session ID SessionID = com_login.findall('.//SessionId', nsmap)[0].text # 定位api:PlexViewResponse元素 plex_response = com_login.find('.//api:PlexViewResponse', nsmap) # 获取Status属性值(不存在则返回None) status = plex_response.get('Status') # 获取可能存在的Error属性值(不存在则返回None) error = plex_response.get('Error') # 后续逻辑示例 if status == 'SUCCESS': print(f"登录成功,SessionID: {SessionID}") elif error: print(f"登录失败,错误信息: {error}") else: print("未知响应状态")
关键说明
- 用
find('.//api:PlexViewResponse', nsmap)定位目标元素:因为响应里通常只有一个PlexViewResponse,用find()比findall()更高效,直接返回匹配的第一个元素。 get()方法的安全性:不管属性是否存在,都不会抛出异常,返回None的特性刚好适配你需要处理Error属性的场景——可以直接通过判断error是否为None来确定是否有错误信息。
内容的提问来源于stack exchange,提问作者Kelso
相关产品推荐
相关产品推荐

