python解析soap的xml,如何⽤Python解析SOAPXML?⼀个⽼问题,但值得⼀提的是这项任务的另⼀个选择。
我喜欢使⽤xmltodict(Github)这是⼀个将XML转换为python字典的轻量级转换器。
将soap响应放⼊名为stack的变量中
⽤xmltodict.parse解析它In [48]: stack_d = xmltodict.parse(stack)
检查结果:In [49]: stack_d
Out[49]:
OrderedDict([('soap:Envelope',
OrderedDict([('@xmlns:soap',
'/soap/envelope/'),
('@xmlns:xsd', '/2001/XMLSchema'),
('@xmlns:xsi',
'/2001/XMLSchema-instance'),
('soap:Body',
OrderedDict([('GetStartEndPointResponse',
OrderedDict([('@xmlns',
'is.fskab.se/v1.0/ETISws'),
('GetStartEndPointResult',
OrderedDict([('Code',
'0'),
('Message',
None),
('StartPoints',
OrderedDict([('Point',
[OrderedDict([('Id',
'545'),
('Name',
'Get Me'),
('Type',
'sometype'),
('X',
'333'),
('Y',
'222')]),
python处理xml文件
OrderedDict([('Id',
'634'),
('Name',
'Get me too'),
('Type',
'sometype'),
('X',
'555'),
('Y',
'777')])])]))]))]))]))]))])
在这⼀点上,浏览python词汇表变得⾮常容易In [50]: stack_d['soap:Envelope']['soap:Body']['GetStartEndPointResponse'] ['GetStartEndPointResult']['StartPoints']['Point']
Out[50]:
[OrderedDict([('Id', '545'),
('Name', 'Get Me'),
('Type', 'sometype'),
('X', '333'),
('Y', '222')]),
OrderedDict([('Id', '634'),
('Name', 'Get me too'),
('Type', 'sometype'),
('X', '555'),
('Y', '777')])]