"""
XML
是什么
eXtensible Markup Language可扩展标记语言
xml也是一种文档结构 ,也是一种序列化方式
与json不同的地方在于 XML可以定义文档的结构 例如在页面中 有页头页尾等...
语法格式:
使用标签来描述数据
<tag></tag>
通常由一对标签组成 开始标签和结束标签
<tag/> 单标签 直接再名字后面加上斜杠结束
一个标签由三个部分组成
1.标签名
2.属性
<tag name="刘xx" age = "20"></tag>
属性名称为name 值为刘xx 注意值必须放在双引号中
3.文本内容
<tag>这是文本内容</tag>
标签可以嵌套
<persons>
<p name="a"></p>
<p name="b"></p>
</persons>
标签嵌套时 关闭的顺序与打开的顺序 相反
注意:最外层必须只有一个根标签
<info name="self" age="18" sex="woman"/>
xml模块的使用
xml模块的主要功能就是 解析xml 即序列化和反序列化
对于xml格式的数据 一般不会使用代码来生成 更多的是读取xml的文件内容
主要函数:
iter
find
findall
"""
import xml.etree.ElementTree as ET
# 解析某个文件
tree = ET.parse("test.xml")
# 获取根标签
root = tree.getroot()
# print(root)
# # tag 获取标签名字
# print(root.tag)
# 获取文本
# print(root.text)
# 获取属性 返回一个字典
# print(root.attrib)
# 获取子标签(元素,节点)
# iter 在全文范围查找所有名字匹配的
# res = root.iter("country")
#
# print(list(res))
# res = root.iter("year")
# for i in res:
# print(i.text)
# find 当前标签的子标签 并且只返回第一个
# res = root.find("country")
# print(res)
#
# # 可以一级一级往里找
# res = root.find("country").find("year")
# print(res)
# # print(res.attrib["name"])
# findall 当前标签的子标签 并且只返回所有匹配的
# res = root.findall("country")
# print(res[1].tag)