zoukankan      html  css  js  c++  java
  • python XML模块

     XML模块

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,
    大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

    XML文件例子

    <?xml version="1.0"?>
    <data>
        <country name="Liechtenstein">
            <rank updated="yes">2</rank>
            <year>2008</year>
            <gdppc>141100</gdppc>
            <neighbor name="Austria" direction="E"/>
            <neighbor name="Switzerland" direction="W"/>
        </country>
        <country name="Singapore">
            <rank updated="yes">5</rank>
            <year>2011</year>
            <gdppc>59900</gdppc>
            <neighbor name="Malaysia" direction="N"/>
        </country>
        <country name="Panama">
            <rank updated="yes">69</rank>
            <year>2011</year>
            <gdppc>13600</gdppc>
            <neighbor name="Costa Rica" direction="W"/>
            <neighbor name="Colombia" direction="E"/>
        </country>
    </data>
    
    xml数据
    xml文件
    XML 文件内容

    XML文件的操作

    # 增删改查
    # 在进行操作之前,都应该进行这两步:
    
    # import xml.etree.ElementTree as ET
    # tree = ET.parse('a.xml')  # 形成树形结构
    # root = tree.getroot()  # 得到树的根系
    # print(root)
    # 循环打印:
    # for i in root:
    #     print(i)
    # <Element 'country' at 0x00000196B51191D8>
    # <Element 'country' at 0x00000196B5124B88>
    # <Element 'country' at 0x00000196B5124D18>
    
    # 所有的增删改查都是基于这个root根系去操作
    
    # 查:
    # 1,全文搜索 year 将所有的year标签全部找
    # print(root.iter('year'))
    # print([i for i in root.iter('year')])
    # 2,只找第一个,找到就返回
    # print(root.find('country'))
    # 3,在root的子节点找,找所有的
    # print(root.findall('country'))
    
    # 练习
    # 找到标签也可以找到标签相应的内容:tag,attrib,text
    
    # 1,找所有的rank标签,以及 attrib 和 text (这里利用列表推导式比较方便)
    # print([i for i in root.iter('rank')])
    # [<Element 'rank' at 0x000001367D0D49F8>, <Element 'rank' at 0x000001367D0D4BD8>, <Element 'rank' at 0x000001367D0D4D68>]
    # print([i.attrib for i in root.iter('rank')])
    # [{'updated': 'yes'}, {'updated': 'yes'}, {'updated': 'yes'}]
    # print([i.text for i in root.iter('rank')])  # ['2', '5', '69']
    
    # 2,找到第二个country的 neighbor标签以及他的属性
    # print([tag for tag in root.findall('country')][1].find('neighbor').attrib)
    # {'direction': 'N', 'name': 'Malaysia'}
    
    
    # 增 append
    # import xml.etree.ElementTree as ET
    # tree = ET.parse('a.xml')  # 形成树形结构
    # root = tree.getroot()  # 得到树的根系
    
    # 给 year 大于2010年的所有标签下面添加一个month标签,属性为name:month 内容为30days
    
    # for country in root.findall('country'):
    #     for year in country.findall('year'):
    #         if int(year.text) > 2010:
    #             month = ET.Element('month')
    #             month.text = '30days'
    #             month.attrib = {'name': 'month'}
    #             country.append(month)
    # tree.write('b.xml')
    
    #
    
    # import xml.etree.ElementTree as ET
    # tree = ET.parse('a.xml')  # 形成树形结构
    # root = tree.getroot()  # 得到树的根系
    # 对所有的year属性以及值进行修改
    # for node in root.iter('year'):
    #     new_year=int(node.text)+1
    #     node.text=str(new_year)
    #     node.set('updated','yes')
    #     node.set('version','1.0')
    # tree.write('test.xml')
    
    
    #
    # import xml.etree.ElementTree as ET
    # tree = ET.parse('a.xml')  # 形成树形结构
    # root = tree.getroot()  # 得到树的根系
    #
    # # 将 rank值大于50的country标签删除
    # for country in root.findall('country'):
    #    rank = int(country.find('rank').text)
    #    if rank > 50:
    #      root.remove(country)
    #
    # tree.write('output.xml')
    对xml的增删改查简单操作

    XML文件的创建

    import xml.etree.ElementTree as ET
     
     
    new_xml = ET.Element("namelist")
    name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
    age = ET.SubElement(name,"age",attrib={"checked":"no"})
    sex = ET.SubElement(name,"sex")
    sex.text = '33'
    name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
    age = ET.SubElement(name2,"age")
    age.text = '19'
     
    et = ET.ElementTree(new_xml) #生成文档对象
    et.write("test.xml", encoding="utf-8",xml_declaration=True)
     
    ET.dump(new_xml) #打印生成的格式
    创建xml文档
  • 相关阅读:
    Java--NIO(一)
    Jackson
    SpringBoot整合Redis作为缓存
    RabbitMq学习笔记——配置
    RabbitMq学习笔记——概念
    利用gsoap工具,通过wsdl文件生成webservice的C++工程文件
    QThreadPool&QRunnable&类函数的使用
    C++构造函数初始化列表与构造函数中的赋值的区别
    Qt 4.8.2.+VS2008静态编译
    Qt开发的程序在没有安装Qt环境的机器上可能出现的一些问题
  • 原文地址:https://www.cnblogs.com/xiaoli0520/p/13883712.html
Copyright © 2011-2022 走看看