python学习-52 XML模块
XML模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单。
例如:创建一个xml文件
<data> <country name="china"> <rank updated="yes">1</rank> <year>2019</year> <neighbor name="American"/> </country> <country name="Canada"> <rank updated="yes">2</rank> <year>2019</year> <neighbor name="American"/> </country> </data>
查询内容
import xml.etree.ElementTree as ET tree = ET.parse("xml") root = tree.getroot() print(root.tag) print('__________________') # 查 for a in root: # 遍历根 print(a.tag) print(a.attrib) for b in a : # 遍历根的下一级 print(b.text) for node in root.iter('year'): #遍历节点,取year的内容 print(node.tag,node.text)
运行结果:
data __________________ country {'name': 'china'} 2 2019 None country {'name': 'Canada'} 2 2019 None year 2019 year 2019 Process finished with exit code 0
修改和删除
import xml.etree.ElementTree as ET tree = ET.parse("xml") root = tree.getroot() # 修改 for node in root.iter("year"): new_year = int(node.text) + 1 # 年份加1 node.text = str(new_year) node.set("updated","yes") # 多加一个属性 tree.write("xml_text.xml") # 放到一个新的文件里 # 删除 for country in root.findall("country"): rank = int(country.find("rank").text) if rank >1: # 删除排名大于1的国家的信息 root.remove(country) tree.write("xml_test2.xml")
创建一个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 = "32" et = ET.ElementTree(new_xml) et.write("xml2_test.xml",encoding="utf-8",xml_declaration=True)