lesson 037 —— XML 模块
关于 xml 模块的简单介绍。一种数据格式。
方法
-
import xml.etree.ElementTree as ET
: 导入模块 -
tree = ET.parse('xmlfile.xml')
: 读入文件<?xml version="1.0" encoding="utf-8"?> <data> <country name="shanghai"> <rank updated="yes">5</rank> <year>2011</year> <gdppc>56000</gdppc> <neighbor name="shanghai1" direction="E" /> </country> <country name="beijing"> <rank updated="yes">3</rank> <year>2012</year> <gdppc>66666</gdppc> <neighbor name="beijing1" direction="W" /> <neighbor name="beijing2" direction="N" /> </country> <country name="hangzhou"> <rank updated="yes">1</rank> <year>2018</year> <gdppc>888888</gdppc> </country> </data>
-
root = tree.getroot()
: 获取根结点(即标签),根结点有标签名和属性两部分,即root.tag
与root.attrib
,有些情况下可能只有标签名而没有属性。 -
root 结点可以使用 for 循环进行遍历,同样得到的是结点,有标签名与属性两部分。
tree = ET.parse('xmlfile.xml') root = tree.getroot() for child in root: print(child.tag, child.attrib) print('text: ', child.text) for i in child: print(i.tag, i.attrib) print('text: ', i.text)
-
root.text
表示的是标签包围的内容。 -
只遍历 year 结点
for node in root.iter('year'): print(node.tag, node.text)
-
修改 year 结点
new_year = int(node.text) + 1 node.text = str(new_year) node.set("updated", "yes")
-
tree.write('xmlfile.xml')
: 写入文件 -
删除结点
for country in root.findall('country'): rank = int(country.find('rank').text) if rank > 30: root.remove(country)
-
自己生成 xml 文档
import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"}) age = ET.SubElement(name,"age",attrib={"checked":"no"}) sex = ET.SubElement(name,"sex") sex.text = '33' 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) #打印生成的格式
网友评论