Здравствуйте.
Коллеги, есть вот такой soap файл (его часть):
<ns0:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schemas.sitels.ru/marti/contextheaders"
xmlns:ns2="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:ns3="http://schemas.sitels.ru/FORIS/IL/PortType/CustomerInformation"
xmlns:ns5="http://schemas.sitels.ru/FORIS/IL/DomainModel/Crm"
xmlns:ns6="http://schemas.sitels.ru/FORIS/IL/DomainModel"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns0:Header>
<ns1:MartiExecutionContext>
<ns2:KeyValueOfstringstring>
<ns2:Key>last-called-actual-server</ns2:Key>
<ns2:Value>a08-il03</ns2:Value>
</ns2:KeyValueOfstringstring>
<ns2:KeyValueOfstringstring>
<ns2:Key>last-call-server-ms</ns2:Key>
<ns2:Value>98</ns2:Value>
</ns2:KeyValueOfstringstring>
</ns1:MartiExecutionContext>
</ns0:Header>
<ns0:Body>
<ns3:GetPaymentListByAccountNumberResponse>
<ns3:GetPaymentListByAccountNumberResult>
<ns3:AccountId xsi:nil="true"/>
<ns3:AccountNumber>text</ns3:AccountNumber>
******
Я пытаюсь его распарсить, выделив элемент AccountNumber:
from xml.etree import ElementTree as ET
url = "url"
tree = ET.parse('bparser/xml_templates/payments.xml')
pl = ET.tostring(tree.getroot())
payload = '{}'.format(pl)
headers = {
'Accept-Encoding': "gzip,deflate",
'Content-Type': "text/xml",
'***':'***',
}
response = requests.request("POST", url, data=payload, headers=headers)
dom = ET.fromstring(response.content)
dom_str = ET.tostring(dom, encoding='utf-8')
namespaces = {'xmlns:ns0':"http://schemas.xmlsoap.org/soap/envelope/",
'xmlns:ns1':"http://schemas.sitels.ru/marti/contextheaders",
'xmlns:ns2':"http://schemas.microsoft.com/2003/10/Serialization/Arrays",
'xmlns:ns3':"http://schemas.sitels.ru/FORIS/IL/PortType/CustomerInformation",
'xmlns:ns5':"http://schemas.sitels.ru/FORIS/IL/DomainModel/Crm",
'xmlns:ns6':"http://schemas.sitels.ru/FORIS/IL/DomainModel",
'xmlns:xsi':"http://www.w3.org/2001/XMLSchema-instance"}
names = dom.findall('ns0:Body' 'ns3:GetPaymentListByAccountNumberResponse' 'ns3:GetPaymentListByAccountNumberResult''ns3:AccountNumber', namespaces)
При таких значениях выходит следующая ошибка:
SyntaxError: prefix 'ns0' not found in prefix map
Если убрать префиксы, то выводится пустой список.