一、XML内容
<data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year>2023</year> <gdppc>141100</gdppc> <neighbor direction="E" name="Austria" /> <neighbor direction="W" name="Switzerland" /> </country> <country name="Singapore"> <rank updated="yes">5</rank> <year>2026</year> <gdppc>59900</gdppc> <neighbor direction="N" name="Malaysia" /> </country> <country name="Panama"> <rank updated="yes">69</rank> <year>2026</year> <gdppc>13600</gdppc> <neighbor direction="W" name="Costa Rica" /> <neighbor direction="E" name="Colombia" /> </country></data> 1.解析 XML from xml.etree import ElementTree as ET
#打开XML,读取XML的内容
str_xml = open("fisrt1.xml",‘r‘).read()
#将字符串解析成XML对象
root = ET.XML(str_xml) 2.直接解析XML文档
#直接解析XML文件str_xml = ET.parse("fisrt1.xml")
#获取XML文件的根节点root = str_xml.getroot() 2.操作XML文件 a.遍历XML文档中的所有内容
from xml.etree import ElementTree as ET #直接解析XML文件str_xml = ET.parse("fisrt1.xml") #获取XML文件的根节点root = str_xml.getroot() #顶层标签 print(root.tag) #遍历XML文件的第二层标签for child in root: print(child.tag, child.attrib) #遍历XML文件的第三层标签 for sub_child in child: print(sub_child.tag, sub_child.text) b.遍历XML文件中指点的节点
from xml.etree import ElementTree as ET #打开XML,读取XML的内容 #直接解析XML文件str_xml = ET.parse("fisrt1.xml") #获取XML文件的根节点root = str_xml.getroot() #顶层标签 print(root.tag) for node in root.iter("year"): print(node.tag, node.text) for node in root.iter("gdppc"): print(node.tag, node.text) C.修改节点的内容 由于修改节点内容时,均是在内存中进行,不会对文件的内容造成影响。如果要修改文件的内容成功,则需要将内存修改的结果保存到文件中
from xml.etree import ElementTree as ET #直接解析XML文件str_xml = ET.parse("fisrt1.xml") #获取XML文件的根节点root = str_xml.getroot() #顶层标签print(root.tag) #修改节点的内容for node in root.iter("year"): #将节点的内容自加1 new_year = int(node.text) + 1 node.text = str(new_year) #设置节点 node.set(‘name‘, ‘hjw‘) node.set(‘age‘,‘18‘) # 保存修改的文件tree = ET.ElementTree(root)tree.write(‘aa.xml‘, encoding = ‘utf-8‘) d.删除节点
from xml.etree import ElementTree as ET #直接解析XML文件str_xml = ET.parse("fisrt1.xml") #获取XML文件的根节点root = str_xml.getroot() #顶层标签print(root.tag) #遍历data下的country下节点for country in root.findall(‘country‘): #获取每个rank节点的内容 rank = int(country.find(‘rank‘).text) if rank > 50: #删除指定的country节点 root.remove(country) #保存修改后的内容tree = ET.ElementTree(root)tree.write(‘bb.xml‘, encoding=‘utf-8‘) 3.创建XML
from xml.etree import ElementTree as ET #创建根节点 root = ET.Element(‘famliy‘) #创建节点大儿子son1 = ET.Element(‘son‘, {‘name‘ : ‘儿1‘})#创建节点小儿子son2 = ET.Element(‘son‘, {‘name‘ : ‘儿2‘}) #在大儿子中创建孙子节点grandson1 = ET.Element(‘grandson‘, {‘name‘ : ‘儿11‘})grandson2 = ET.Element("grandson", {‘name‘ : ‘儿12‘}) #把孙子添加到儿1中son1.append(grandson1)son1.append(grandson2) #把儿子添加中根节点中root.append(son1)root.append(son2) #b保存文件tree = ET.ElementTree(root)tree.write(‘new_son1.xml‘, encoding = ‘utf-8‘)
时间: 2024-12-07 21:39:32