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)

 

posted @ 2018-09-27 20:37  Freedom_L  阅读(325)  评论(0编辑  收藏  举报