''' ElementTree 生来就是为了处理 XML ,它在 Python 标准库中有两种实现。 一种是纯 Python 实现例如 xml.etree.ElementTree , 另外一种是速度快一点的 xml.etree.cElementTree 。 你要记住: 尽量使用 C 语言实现的那种,因为它速度更快,而且消耗的内存更少。 一般使用下面的代码来导入。 ''' try: import xml.etree.cElementTree as et except ImportError: import xml.etree.ElementTree as et
# 解析文件 parser = et.parse("data.xml")
# 获取根节点 root = parser.getroot()
# 获取标签名字 print(root.tag)
# 获取属性 attr = root.attrib
# 通过索引访问节点 print(root[0][0].text)
# 查找根目录下面的子元素 for name in root.findall("student"): # 查找一个具体的元素 print(name.find("age").get("updated")) #获取属性 print(name.get("no"))
#获取student元素 #更改student.age年龄 #获取name设置属性 #写入文档 for child in root.iter("student"): new_age = int(child.find("age").text) + 10 child.find("age").text = str(new_age) child.find("name").set("nickname","apple") parser.write("data.xml")
#查找根目录下面的子元素 #查找age #如果大于age删除元素 #写入文档 for offspring in root.findall("student"): age = int(offspring.find("age").text) if(age > 60): root.remove(offspring) parser.write("data.xml")
#创建元素 father = et.Element("father") father.text = "Jason" son = et.SubElement(father,"son") son.text = "Lan" daughter=et.SubElement(father,"daughter") daughter.text = "sunny" print(et.dump(father)) exit()
#迭代属性 for child in root: print(("iterator node name is {} , attr is {}").format)(child.tag,child.attrib)
for student in root.findall('student'): id = student.get("no") name = student.find("name").text print(id,name)
for age in root.iter('age'): new_age = int(age.text)+1 age.text = str(new_age) age.set('updated','yes') #写入文件 用什么编码 是否要申明头部文件 parser.write("data.xml",encoding="utf-8",xml_declaration=True)
for name in root.iter("student"): #print name.tag print(name.attrib["no"])