增:新建一个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,拿到文件内容,赋值给roottree = 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.tagfor 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)