什么是XML
XML与JSON的对比
XML文档格式
使用XML模块解析
一,什么是XML
''' XML 全称可扩展标记语言
<tag></tag> 双标签 <tag/> 单标签 没有文本 一般用于设计文档结构 例如:换行等 <tr/>表示换行 <tag style='color:red' age='18' >123456</tag> 一个标签的完整组成 有三个部分 tag 是标签名称 1234是文本内容 text name = 'jack' 是标签的属性 其他的规范: 1,从开始就必须结束 2,所有属性值必须必须在双引号里面 3,只能有一个根标签 (最外层只能有一个标签) 4,开始标签和结束标签的顺序是相反的 ,最先打开谁,就最后关闭谁,最后打开的最先关闭 文档声明可不写,主要是告诉浏览器,该怎么解析这个文件 XML模块是自带的,不需要安装 与JSON的区别: XML 是一种可扩展的标记语言 可以高度 自定义文档的结构,数据类型,标签的含义,使用场景广泛,不局限于前后台的数据交互,在其他语言中还经常作为配置文件来使用 所以扩展性远比JSON要强,XML用做数据交换格式的话,远不如json来的简单,JSON更加适用于前后台数据交换 JSON优点: 轻量级,跨平台,语法简洁 使用场景:多为前后台交互 XML更多用来作为配置文件,当然python不太常用,HXML也属于XML 总结,xml的解析比起json而言非常复杂 因为其扩展性远比json高,在java中常作为配置文件,当你在前后台进行数据交互时,优先使用json格式
'''''
1.**三个用于查找标签函数
iter("标签名") #全文查找
find("标签名") #查找子节点匹配的第一个
findall("标签名") #查找子节点匹配的所有标签
2.**访问标签的内容
element.tag 获取标签名
element.attrib 获取属性
element.text 获取文本
3.修改文档内容
elment.tag = "标签名"
element.text = "文本"
element.set("属性名","属性值")
4.删除节点
root.remove(标签对象)
5.添加子标签
#创建标签对象
year2=ET.Element('year2') # 指定名称
year2.text='新年'
year2.attrib={'update':'yes'}
#添加
country.append(year2) #往country节点下添加子节点
删除添加修改后都需要调用write写入到文件
tree.write("文件名"),#注意文档对象才能执行写入操作
import xml.etree.ElementTree as ET #打开一个文档,得到一个元素树(XML文档) tree = ET.parse('test.xml') #获取根标签 root = tree.getroot() print(root) #<Element 'data' at 0x000001FE7FBEDEA8> #遍历出root标签的所有子标签 for tag in root: print(tag) #遍历出文档中所有标签 for tag in root.iter(): print(tag) #从root下查找第一个名为country的子标签 country = root.find('country') print(country) #<Element 'country' at 0x000001F46BA8C3B8> #从root下查找所有名字为country的子标签 countrys = root.findall('country') print(countrys) #从root下查找所有名字为county的子孙标签 for tag in root.iter('country'): print(tag)
''' 解析XML得到一个tree对象后,查找标签的4种方式 1,iter() 如果没有参数则查找所有标签 如果有参数则查找所有名字匹配的标签 查找范围 为全文 2,find() 必须给参数 查找当前标签的子标签,返回第一个名字匹配的 3,findall() 必须给参数 查找当前标签的子标签,返回所有名字匹配的 4,直接遍历某个标签 返回的是这个标签的所有子标签 '''
二,