增:新建一个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)