在Python中从SOAP响应中提取XML数据
我使用Python脚本从SOAP web服务接收XML响应,我想从XML响应中提取特定值。我正在尝试使用“解开”库,但不断出现以下错误: AttributeError:“无”没有属性“信封” 下面是我的代码示例。我试图从下面的列表中提取RequestType值在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/>
<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)