• XML模块增删改查基本操作


    增:新建一个xml文件,把数据写进去

    # 怎么生成一个xml文件?
    # 1,导入模块
    import xml.etree.ElementTree as et
    
    # 2, 定义节点
    root = et.Element('namelist')
    
    # 3,定义节点下相应的值和属性
    name = et.SubElement(root,'name',attrib={'enroll':'yes'})  # 问题:attrib是什么,设置了有什么用?
    age = et.SubElement(root,'age',attrib={'check':'no'})
    sex = et.SubElement(name,'sex')
    n = et.SubElement(name,'name')
    
    # 4,给定义的节点和值 赋值元素
    name.text = 'jack'
    age.text = '18'
    sex.text = 'male'
    n.text = 'sexname'
    
    # 5, 把上面写的节点和值赋给doc,生成文档对象
    doc = et.ElementTree(root)
    
    # 6, 把生成的文档写入文件
    doc.write('xmldoc.xml',encoding='UTF-8',xml_declaration=True)
    
    # 7, 打印生成格式
    et.dump(doc)

    改:

    # 修改xml的内容
    # 1,拿到文件内容,赋值给root
    tree = et.parse('xml test.xml') # 载入硬盘数据
    root = tree.getroot()   # 获取节点
    
    # 2,对至或者元素修改
    for i in root.iter('year'): # iter把year至找出来
        new_year = int(i.text) + 1  # i.text找出对应元素,赋给变量
        i.text = str(new_year)  # 把变量值写回去
        i.set('updated','yes')  # 设置属性i.set()
    
    
    
    
    # 3, 修改后的内容tree写回文件
    tree.write('E:xml test.xml')

    删:

     删除xml的内容
    #  1, root.remove(n)删除
    for country in root.findall('country'):  # 找到country节点
        rank = int(country.find('rank').text)  # 把拿到country节点的值
        if rank > 50:   # 条件判断
            root.remove(country)    # 删除节点
    # 2, 写回文件
    tree.write('output.xml')

    查:

    # 查询怎么操作?
    # 1,导入模块
    import xml.etree.ElementTree as ET
    
    # 2.把xml文件打开
    xml = ET.parse('xml test')  # parse的作用是什么? 把载入硬盘数据
    
    # 3,把文件里的数据读取并付给一个变量,以便进行查询操作
    root = xml.getroot()  # getroot()作用是什么? 获取根节点和数据
    
    # 4, 循环root,打印节点i.tag
    for i in root:
        print(i.tag)
    # 5, 打印节点的值i.attrib
        print(i.attrib)
    # 6, 打印节点的值里对应的元素---用先循环root,再循环一次到里面的层,拿到.text的值
    for i in root:
        print('------------i.tag')
        for j in i:
            print(j.text)
  • 相关阅读:
    Swift 3 中的访问控制 open public internal fileprivate private
    swift3.0 创建一个app引导页面
    cocoapods安装及常用命令
    swift 多线程及GCD
    swift 键盘属性与事件
    [bzoj2588] Count on a tree
    [JSOI2007] 文本生成器
    18.09.22模拟赛T2 历史
    [USACO18OPEN] Talent Show
    [国家集训队] 整数的lqp拆分
  • 原文地址:https://www.cnblogs.com/jackfree/p/9715467.html
Copyright © 2020-2023  润新知