问题描述:
1.将xml报文转换成Json对象来获取节点值
import xmltodict
json = xmltodict.parse(xml)
我们需要遍历json中的CouponInfo节点,但是,当CouponInfo是单个而非多个的时候,用for couponInfo in json['CouponInfo']时就会报错,因为单节点的时候,整条CouponInfo会被当成字符串处理不能用couponInfo['couponNo']来获取键值。
2.如何将单节点变成list,
我的解决办法是,当然,这个办法很笨。
向string类型的xml报文中插入一个空节点<CouponInfo/>,然后在用xmltodict.parse(xml)将其转换成Json字典,这样json['CouponInfo']就变成了list,可以循环遍历,当然,在使用的时候要判断节点是否为None
代码如下
import xmltodict import xml import xmlrpc import json rsFile = open('D:/rs.txt') rs = rsFile.read() cEnd = '</CouponInfo>' pos = rs.rfind(cEnd) rs1 = rs[0:pos+len(cEnd)] rs2 = '<CouponInfo/>' rs3 = rs[pos+len(cEnd):len(rs)] print(pos) print('rs1 is : ',rs1) print('rs3 is : ',rs3) rs = rs1 + rs2 + rs3 print(rs) rsJson = xmltodict.parse(rs) print(rsJson) print(len(rsJson['CouponInfo']))