XML模块
XML是实现不同语言或程序之间进行数据交换的协议,和json一样。
XML格式:
Tove Jani Reminder Don't forget me this weekend!
读XML
简单读取XML内容:
import xml.etree.ElementTree as ETtree = ET.parse('xml_test.xml')root = tree.getroot()print(root) #XML对象print(root.tag) #XML最外层标签
遍历XML:
import xml.etree.ElementTree as ETtree = ET.parse('xml_test.xml')root = tree.getroot()for child in root: print(child.tag,child.attrib) #to {'name': 'to'} 遍历标签、属性 for i in child: print(i.tag,i.text) #content Jim 遍历标签、文本 break break
只遍历某一个标签:
for node in root.iter('content'): print(node.tag,node.text) #content Jim #content Jani #content Reminder #content Don't forget me this weekend!
修改XML
for node in root.iter('content'): content = node.text #获取内容 new_content = str('new_content_'+content) node.text = new_content #修改内容 node.set('update','yes') #添加属性tree.write('xml_test.xml') #保存到原文件则覆盖之前内容,保存到新文件则新建
删除XML
for node in root.findall('to'): #找到to这个标签 content = len(node.find('content').text) #继续找到content的标签,并且计算content内容长度 if content > 2: root.remove(node) #移除这个标签tree.write('xml_test3.xml') # 将结果重新写到文件
创建XML
import xml.etree.ElementTree as ETnew_xml = ET.Element("name_list") #创建节点personinfo = ET.SubElement(new_xml,"personinfo",attrib={"enrolled":"yes"}) #创建子节点、子节点名称、属性age = ET.SubElement(personinfo,'age',attrib={"checked":"no"})age.text = '33' #添加子节点文本内容name = ET.SubElement(personinfo,"name")name.text = 'jim'personinfo2 = ET.SubElement(new_xml,"personinfo",attrib={"enrolled":"no"})age = ET.SubElement(personinfo2,'age')age.text = '20'name = ET.SubElement(personinfo2,'name')name.text = 'Lily'et =ET.ElementTree(new_xml) #生成文档对象et.write('xml_test5.xml',encoding='utf-8',xml_declaration=True) #生成xml文件并指定字符集和ET.dump(new_xml) #打印生成格式
创建后的结果:
33 jim 20 Lily