PythonStudy——xml 模块
"""XML 全称? 可扩展标记语言<tag></tag>? 双标签<tag/> 单标签? 没有文本 一般用于设计文档结构 例如换行等<tr/> 表示换行<tag style="color:red" age="18">12345</tag>一个标签的完整组成 有三个部分tag 是标签名称12345 是文本内容 textname = "jack" 是标签的属性其他的规范1.又开始就必须有结束2.所有属性值必须包含在双引号里面3.只能有一个根标签 (最外层只能有一个标签)4.开始标签和结束标签的顺序是相反的? 最先打开谁 就最后关闭谁? 最后打开的最先关闭文档声明可不写 主要是告诉浏览器 该怎么解析这个文件xml模块是自带的 不需要安装与json的区别??? xml 是一种可扩展的标记语言??? 可以高度自定义文档的结构 数据类型 标签的含义等等??? 所以扩展性远比JSON要强??? json更加适用于 前后台数据交换? 优点 轻量级? 跨平台 语法简洁??? xml更多用来作为配置文件 当然 python不太常用??? html就是一种xml"""import xml.etree.ElementTree as ET# 打开一个文档 得到一个元素树(XML文档)tree = ET.parse("test1.xml")# 获取根标签root = tree.getroot()# 遍历出root标签的所有子标签# for tag in root:#???? print(tag)# 遍历出文档中所有标签# for tag in root.iter():#???? print(tag)# 从root下查找第一个名字为country的子标签# country = root.find("country")# print(country)# 从root下查找所有名字为country的子标签# countrys = root.findall("country")# print(countrys)# 从root下查找所有名字为country的子孙标签# for tag in? root.iter("country"):#???? print(tag)"""解析xml得到一个tree对象后 查找标签的4种方式1.iter()??? 如果没有参数则查找所有标签 ??? 如果有参数则查找所有名字匹配的标签 ??? 查找范围 为全文 ?? ?2.find() ??? 必须给参数 ??? 查找当前标签的子标签? 返回第一个名字匹配的?? ?3.findall()??? 必须给参数 ??? 查找当前标签的子标签? 返回所有名字匹配的 4.直接遍历某个标签 ??? 返回的是这个标签的所有子标签 ?? ??? ?"""import xml.etree.ElementTree as ETtree = ET.parse("test1.xml")root = tree.getroot()# 找到所有的country标签es = root.findall("country")# 获取某个标签的 标签名 属性 以及文本# for e in es:#???? print(e.tag) # 标签名称#???? print(e.attrib) # 标签的所有属性 返回一个字典#???? print(e.text) # 标签的文本内容#获取所有国家的 邻居的名称# for c in es:#???? print("%s的邻居如下:" % c.attrib.get("name"))#???? for n in c.findall("neighbor"):#???????? print(n.attrib.get("name"))#???? print("更新时间:%s" % c.find("year").text)#???? print("===================================")import xml.etree.ElementTree as ETfrom xml.etree.ElementTree import Element# tree = ET.parse("test.xml")# root = tree.getroot()# # 修改文本# root.text = "这是跟标签的文本"# # 修改属性 没有则添加 有则覆盖# root.set("name","jack")# # 修改标签名字# root.tag = "data"## tree.write("test2.xml",encoding="utf-8",xml_declaration=True)# 把test1.xml 中所有year标签的text加1# tree = ET.parse("test1.xml")# root = tree.getroot()# for e in root.iter("year"):#???? e.text = str(int(e.text) + 1)### tree.write("test1.xml")## 把test1.xml 中所有gdppc删除# remove 函数 需要一个标签作为参数 即要被删除的标签?? 然后只能有父标签来删除子标签# tree = ET.parse("test1.xml")# root = tree.getroot()## for c in root.iter("country"):#???? gdppc = c.find("gdppc")#???? if gdppc != None:#???????? c.remove(gdppc)## tree.write("test4.xml")# 添加标签tree = ET.parse("test1.xml")root = tree.getroot() # type:Element# 创建需要被添加的子标签new_tag = Element("ThisIsNewTag")new_tag.text = "123" # 设置文本root.append(new_tag) # 添加到root下tree.write("test5.xml") # 写入文件#import xml.etree.ElementTree as et# 创建标签tag = et.Element("data")tag.text = "123"tag.set("name","jack")# 创建一个元素树 并把tag添加到上面tree = et.ElementTree(tag)tree.write("test6.xml") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |