首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python中的SOAP响应中提取XML数据

从Python中的SOAP响应中提取XML数据
EN

Stack Overflow用户
提问于 2021-05-17 07:04:43
回答 2查看 1.4K关注 0票数 0

我使用Python脚本从SOAP服务接收XML响应,我想从XML响应中提取特定的值。我正在尝试使用“getting”库,但始终得到以下错误:

AttributeError:“无”没有属性“信封”

下面是我的代码示例。我试图从下面提取RequestType值

代码语言:javascript
复制
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body>
        <Response>\n  
            <RequestType>test</RequestType> 
        </Response>
    </soap:Body>
</soap:Envelope>

解缠的样本使用

代码语言:javascript
复制
parsed_xml = untangle.parse(xml)
print(parsed_xml.Envelope.Response.RequestType.cdata)

我也试过parsed_xml.Envelope.Body.Response.RequestType.cdata

EN

回答 2

Stack Overflow用户

发布于 2021-10-29 02:34:52

这将解决您的问题,假设您想要提取‘测试’。顺便说一下,我认为您的响应不应该有'soap:Header/':

代码语言:javascript
复制
import xmltodict

stack_d = xmltodict.parse(response.content)
stack_d['soap:Envelope']['soap:Body']['Response']['RequestType']
票数 3
EN

Stack Overflow用户

发布于 2021-05-17 07:33:12

我认为您会发现xml.etree库在这个上下文中更有用。

代码语言:javascript
复制
import requests
from xml.etree import ElementTree

然后,我们需要为SOAP响应定义名称空间。

代码语言:javascript
复制
namespaces = {
    'soap': 'http://schemas.xmlsoap.org/soap/envelope/',
    'a': 'http://www.etis.fskab.se/v1.0/ETISws',
}

dom = Element.tree.fromstring(response.context)

然后简单的找到所有的王国

代码语言:javascript
复制
names = dom.findall('./soap:Body',namespaces)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67565291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档