zoukankan      html  css  js  c++  java
  • python xml包使用记录

    <?xml version="1.0" encoding="utf-8" ?> 
    <request>
        <functionID>subPackageInfo</functionID>
        <time>2014-02-10 15:10:50</time>
        <packageList>
            <packageInfo>    
                <orderId>22088315090</orderId>
                <expressName>EMS</expressName>    
                <expressTel>01</expressTel>    
                <expressNo>0001</expressNo>
                <productId>1001173023</productId>
                <allotQuatity>5</allotQuatity>
                <outOfStockQuatity>0</outOfStockQuatity>
                <promotionID></promotionID>
            </packageInfo>
    
            <packageInfo>
                <orderId>22088315090</orderId>
                <expressName>EMS</expressName>    
                <expressTel>010-55675233</expressTel>    
                <expressNo>0001</expressNo>
                <productId>1001173123</productId>
                <allotQuatity>5</allotQuatity>
                <outOfStockQuatity>0</outOfStockQuatity>
                <promotionID>-1</promotionID>
            </packageInfo>
    
            <packageInfo>
                <orderId>22088315090</orderId>
                <expressName>EMS</expressName>    
                <expressTel>010-55675233</expressTel>    
                <expressNo>0001</expressNo>
                <productId>1001173223</productId>
                <allotQuatity>0</allotQuatity>
                <outOfStockQuatity>1</outOfStockQuatity>
                <promotionID>-1</promotionID>
            </packageInfo>
    
    
        </packageList>
    </request>
    View Code

    首先把以上xml文件保存到本地

    导入xml模块,使用dom.minidom导入xml文件

    #coding:utf-8
    from xml.dom import minidom
    dom=minidom.parse('22088315090.xml')

    >>> packs=dom.getElementsByTagName('packageInfo')

      查找xml下面的所有packageInfo节点

    >>> pack_childnotes=packs[0].childNodes

      查找第一个packageInfo的所有子节点

    >>> for i in pack_childnotes:print '###',i.toxml()
    
    ###     
        
    ### <orderId>22088315090</orderId>
    ###
        
    ### <expressName>EMS</expressName>
    ###     
        
    ### <expressTel>01</expressTel>
    ###     
        
    ### <expressNo>0001</expressNo>
    ###
        
    ### <productId>1001173023</productId>
    ###
        
    ### <allotQuatity>5</allotQuatity>
    ###
        
    ### <outOfStockQuatity>0</outOfStockQuatity>
    ###
        
    ### <promotionID/>
    ### 
    View Code

    以上打印出所有类型的xml信息,包括元素类型和文本类型

    >>> for i in pack_childnotes:
        if i.nodeType==i.TEXT_NODE:
            pass
        else:
            print 'name',i.nodeName
            tagname=i.nodeName
            if i.childNodes:
                print 'type',i.childNodes[0].data
                value=i.childNodes[0].data
            else:
                value=''
            orders_info[tagname]=value
        print orders_info
    
            
    {u'orderId': u'22088315090', u'promotionID': '', u'outOfStockQuatity': u'0', u'expressNo': u'0001', u'expressTel': u'01', u'productId': u'1001173023', u'expressName': u'EMS', u'allotQuatity': u'5'}
    View Code

    把第一个packageInfo的子节点数据拿到保存在字典中

    完整的代码如下:

    #coding:utf-8
    from xml.dom import minidom
    dom=minidom.parse('22088315090.xml')
    packs=dom.getElementsByTagName('packageInfo')
    orders=[]
    #pack_childnotes=packs[0].childNodes
    
    def control(pack):
        pack_childnotes=pack.childNodes
        orders_info={}
        for i in pack_childnotes:
            if i.nodeType==i.TEXT_NODE:
                pass
            else:
                #print 'name',i.nodeName
                tagname=i.nodeName
                if i.childNodes:
                    #print 'type',i.childNodes[0].data
                    value=i.childNodes[0].data
                else:
                    value=''
                orders_info[tagname]=value
        return orders_info
    
    
    for pack in packs:
        #print pack
        
        orders.append(control(pack))
    print orders    
    View Code
  • 相关阅读:
    用户、群组、权限
    分页提纲
    网页分页显示
    OMR数据查询
    ORM增删改查询例题
    人工智能将推动云存储和数据服务的创新
    如何在智能家居中提高IoT安全性?
    云计算是物联网的重要支柱
    一个高薪的码农,应具备的8种能力
    如何跨越比特币的认知障碍?
  • 原文地址:https://www.cnblogs.com/paisen/p/3638731.html
Copyright © 2011-2022 走看看