如何使用Etree正确解析Python中的SOAP XML?

时间:2015-08-11 00:21:27

标签: xml python-2.7 soap elementtree

我正在尝试解析xml响应,我将其作为字符串返回到我可以实际使用的内容中。到目前为止,我使用的是xml.etree.ElementTree,但它无法正常工作。

import xml.etree.ElementTree as ET
xml_response = initialize_header(xml_param, 'AirService').text

#Take out SOAP envelope
xml_response=xml_response.split('<SOAP:Body>',1)[1].split('</SOAP:Body>',1)[0]

#Put into XML tree. Not perfect
root=ET.fromstring(xml_response)

#Basic info for first flight, dict
first_flight=root.find('{http://www.travelport.com/schema/air_v29_0}AirPricingSolution').attrib

#root[5][2].attrib['TotalPrice']
return root, first_flight ,xml_response#, etree_to_dict(root)

当我访问根节点的子节点时,我得到以下内容:

<Element '{http://www.travelport.com/schema/common_v29_0}ResponseMessage' at 0x3015730>
<Element '{http://www.travelport.com/schema/air_v29_0}FlightDetailsList' at 0x30157b0>
<Element '{http://www.travelport.com/schema/air_v29_0}AirSegmentList' at 0x3015630>
<Element '{http://www.travelport.com/schema/air_v29_0}FareInfoList' at 0x3015d30>
<Element '{http://www.travelport.com/schema/air_v29_0}RouteList' at 0x3015fb0>
<Element '{http://www.travelport.com/schema/air_v29_0}AirPricingSolution' at 0x3033030>
<Element '{http://www.travelport.com/schema/air_v29_0}AirPricingSolution' at 0x2fec7d0>
<Element '{http://www.travelport.com/schema/air_v29_0}AirPricingSolution' at 0x3033b90>

我的问题是我希望能够在创建元素树时摆脱{http:// .....}部分,所以当我把它变成字典时,它就会被删除更有效。最好的方法是什么?此外,我并非100%在etrees上销售,如果有人有更好的解决方案,请告诉我。

提前致谢。

0 个答案:

没有答案