2016-06-17 10 views
0

Я использую библиотеку «запросов» для запуска SOAP-сервисов.Как Довольно Печатать XML, возвращенный из Запросов lib в python

headers = {'content-type': 'application/json'} 
response = requests.post(test_url,data=testData.request_body,headers=headers) 

ответ приходит, как показано ниже (неформатированный)

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://xxx.abc.in"><SOAP-ENV:Body><ns1:LoginResponse><return><SessionID>abc12345</SessionID><ResponseCode>0</ResponseCode><ResponseMessage>Successful</ResponseMessage></return></ns1:LoginResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> 

Как я довольно напечатать это?

ответ

0

Вы можете использовать BeautifulSoup проходя "xml" как синтаксический анализатор:

x = '''<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://xxx.abc.in"><SOAP-ENV:Body><ns1:LoginResponse><return><SessionID>abc12345</SessionID><ResponseCode>0</ResponseCode><ResponseMessage>Successful</ResponseMessage></return></ns1:LoginResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>''' 

print(BeautifulSoup(x, "xml").prettify()) 

Выход:

<?xml version="1.0" encoding="utf-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://xxx.abc.in"> 
<SOAP-ENV:Body> 
    <ns1:LoginResponse> 
    <return> 
    <SessionID> 
    abc12345 
    </SessionID> 
    <ResponseCode> 
    0 
    </ResponseCode> 
    <ResponseMessage> 
    Successful 
    </ResponseMessage> 
    </return> 
    </ns1:LoginResponse> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 
+0

Спасибо! Он работает – RJX

+0

@RJX Отметьте ответ как принятый. – Salman

0

Предполагая, что вы начинаете с XML-строки:

#LXML 
from lxml import etree 
xmlRootNode = etree.fromstring(resp_str) 
xmlstr = etree.tostring(xmlRootNode, xml_declaration=True, encoding="UTF-8", pretty_print=True) 

или

#xml 
import xml.etree.ElementTree as ET 
import xml.dom.minidom 
s = ET.tostring(xmlRootNode, encoding="UTF-8", method="xml") 
xmln = xml.dom.minidom.parseString(resp_str) 
xmlstr = xmln.toprettyxml()