Python基础-----xml模块
1、xml模块介绍及用法
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单。
xml的格式通过<>节点来区别数据结构的
import xml.etree.ElementTree as ET tree = ET.parse("xml_temp.xml") #parse()解析 对xml文件进行解析 root = tree.getroot() #getroot()获取 xml文件的根节点,该例为 <data> print(root.tag) #.tag 获取xml文件的根节点标签名,该例为 data 遍历xml文档 for child in root: #遍历根节点下的子节点 print(child.tag, child.attrib) #遍历打印出子节点下的.tag标签名和.attrib属性(以字典键值对形式) # count {'name':'Liechtenstein'} for i in child: #遍历子节点下的子元素(rank year gdppc neighbor) print(i.tag,i.text) #遍历打印出子节点下的子元素.tag标签名和.text值,没有则返回None #rank 2 #只遍历year 节点 for node in root.iter('year'): #root.iter('year')获取到根(data)下的所有'year'节点标签进行遍历 print(node.tag,node.text) #遍历打印出'year'标签的标签名和值(text) year 2008
#修改
for node in root.iter('year'):
new_year = int(node.text) + 2 #对所有的'year'节点标签的值年份值修改 +2
node.text = str(new_year)
node.set("updated","yes") #属性修改,对所有的'year'节点标签增加一个‘updated’属性,并赋值为'yes'
tree.write("xmltest.xml") #写入文本,修改才会生效(名字可以重复,重复即覆盖)
#删除node
for country in root.findall('country'): #root.findall('country')查找data下的所有country
rank = int(country.find('rank').text) #country.find('rank').text查找country节点下'rank'标签的值
if rank > 50: #'rank'标签的值>50
root.remove(country) # 则删除这个country的整体信息
tree.write('output.xml')
2、创建xml文档
import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") #创建根节点(标签) name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"}) #在上述根节点下创建子节点'name', # 并添加"enrolled"属性和值"yes" age = ET.SubElement(name,"age",attrib={"checked":"no"}) #在'name'标签下创建子节点'age',并添加属性和值 sex = ET.SubElement(name,"sex") sex.text = '33' #对'name'标签下创建的子节点'sex'添加值 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) #打印生成的格式