python->解析xml文件

'''
"D:\three_test\gpn_InternetGatewayDevice_v2.xml"

<SOAP-ENV:Envelope>
<SOAP-ENV:Header>
<cwmp:ID SOAP-ENV:mustUnderstand="1">1</cwmp:ID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<cwmp:GetParameterNamesResponse>
<ParameterList xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="cwmp:ParameterInfoStruct[6570]">
<ParameterInfoStruct>
<Name>InternetGatewayDevice.WANDeviceNumberOfEntries</Name>
<Writable>0</Writable>
</ParameterInfoStruct>
<ParameterInfoStruct>
<Name>InternetGatewayDevice.WANDevice.</Name>
<Writable>0</Writable>
</ParameterInfoStruct>
<ParameterInfoStruct>
</cwmp:GetParameterNamesResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
'''
import xmltodict

#将xml中的数据读入内存并整个转换成一个字典,放入doc
with open(r"D:\three_test\gpn_InternetGatewayDevice_v2.xml") as fd:
doc = xmltodict.parse(fd.read())

#取字典中的数据也很简单,按照xml文件中的格式依次往下即可
#e.g:取结点属性
print(doc["SOAP-ENV:Envelope"]["SOAP-ENV:Header"]["cwmp:ID"]['@SOAP-ENV:mustUnderstand']) #1
print(doc['SOAP-ENV:Envelope']['SOAP-ENV:Body']['cwmp:GetParameterNamesResponse']['ParameterList']['@xsi:type']) #SOAP-ENC:Array
#e.g.取结点值
print(doc["SOAP-ENV:Envelope"]["SOAP-ENV:Header"]["cwmp:ID"]['#text']) #1
print(doc['SOAP-ENV:Envelope']['SOAP-ENV:Body']['cwmp:GetParameterNamesResponse']['ParameterList']['ParameterInfoStruct'][0]['Name']) #InternetGatewayDevice.WANDeviceNumberOfEntries

#e.g.如果是multiobject,将返回一个列表,列表中每一个元素都是一个对象OrderedDict([('Name', 'XXX'), ('Writable', 'X')])
list = doc["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["cwmp:GetParameterNamesResponse"]["ParameterList"]["ParameterInfoStruct"]
#遍历列表中的每一个子字典,i为列表下标
for i,obj in enumerate(list):
print(obj['Name'])
print(obj['Writable'])
break;

#加入下面这两条指令,代码运行到此处就相当于打了一个断点,这中方式确定下路径是否正确效率更高。
import pdb
pdb.set_trace()

转载于:https://www.cnblogs.com/aimmiao/p/10148686.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值