zoukankan      html  css  js  c++  java
  • xmltodict-解析xml文件

    '''
    "D: hree_testgpn_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: hree_testgpn_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()
  • 相关阅读:
    Oracle使用笔记
    跳转至锚点
    项目中使用到的AOP
    短信验证码接口使用
    阿里人脸识别接口
    java实现网页截图
    java后台接收微信服务号/订阅号消息
    java 实现redis缓存
    redis 常用命令
    被骗了,自己还不知道
  • 原文地址:https://www.cnblogs.com/aimmiao/p/10148686.html
Copyright © 2011-2022 走看看