在Python中从SOAP响应中提取XML数据

在Python中从SOAP响应中提取XML数据,python,xml,parsing,soap,Python,Xml,Parsing,Soap,我使用Python脚本从SOAP web服务接收XML响应,我想从XML响应中提取特定值。我正在尝试使用“解开”库,但不断出现以下错误: AttributeError:“无”没有属性“信封” 下面是我的代码示例。我试图从下面的列表中提取RequestType值 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/>

我使用Python脚本从SOAP web服务接收XML响应,我想从XML响应中提取特定值。我正在尝试使用“解开”库,但不断出现以下错误:

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

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

<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header/>
    <soap:Body>
        <Response>\n  
            <RequestType>test</RequestType> 
        </Response>
    </soap:Body>
</soap:Envelope>

我还尝试了
parsed\u xml.Envelope.Body.Response.RequestType.cdata

我想您会发现
xml.etree
库在这种情况下更有用

import requests
from xml.etree import ElementTree
然后我们需要为SOAP响应定义名称空间

namespaces = {
    'soap': 'http://schemas.xmlsoap.org/soap/envelope/',
    'a': 'http://www.etis.fskab.se/v1.0/ETISws',
}

dom = Element.tree.fromstring(response.context)
然后简单地查找所有DOM

names = dom.findall('./soap:Body',namespaces)

我没有使用过untangle,但不清楚它是如何处理XML名称空间的(这里没有信息:)。谢谢,但代码似乎不起作用。您的dom=Element.tree.fromstring命令中的“Element”有问题:NameError:名称“Element”未定义1)无论是
请求还是
http://www.etis.fskab.se/v1.0/ETISws
问题中使用了名称空间。提到它们只是让人困惑。2) “找到所有的DOM”是一个奇怪的短语
findall
没有找到“DOMs”,而是找到元素。请在答案上多加努力。
names = dom.findall('./soap:Body',namespaces)