一、xml文件概述
1.xml文件含义
xml文件:可扩展标记语言,可用来标记数据、定义数据类型,是一种用户对自己的标记语言进行定义的源语言。
xml与html比较:
xml:用来传输、存储数据
html:用来显示数据
2.xml结构
- xml文档为树形结构,从根部开始,扩展到枝叶
- 第一行是xml声明,定义了xml的版本、所使用的编码
:是根元素(根节点) -
3.xml特征
由标签对组成:
- 标签可以有属性:
- 标签对可以嵌入数据:
abc - 标签可以嵌入子标签(具有层级关系):
111 4.DOM(文档对象模型)
文档对象模型:Document Object Model,DOM。是针对html和xml提供的一个API,即为了能以编程的方法操作这个html内容(如:增删改元素)。把html或xml看作是一个对象数(DOM树),其本身及其内部所有的东西都可看作是一个对象(节点,node)。
DOM作用:为了操作html或xml中的元素。(如:通过js把网页的标题修改,可通过document.title = 'test'实现)
二、创建xml文件
1.创建一个xml文件
创建一个xml文件,命名为Class.xml,用来存储班级学生(姓名,年龄,城市)、老师(姓名,年龄,城市)、教务账号(学生和老师的账号,密码)等信息。
<?xml version="1.0" encoding="utf-8"?><Class> <!-- 根元素(父元素) --><student> <!-- 元素节点 --><name>Jack</name> <!-- 文本节点 --><age>28</age><city>Beijing</city></student><student><name>Candy</name><age>25</age><city>Chengdu</city></student><teacher><name>Harry</name><age>30</age><city>Shanghai</city></teacher><account><login username="student" password="123456" /> <!-- 属性节点 --><login username="teacher" password="888888" /></account></Class>
2.xml文件中节点的类型
1)元素节点
2)文本节点
3)属性节点
节点的属性:
- 节点名称:nodeName
- 节点值:nodeValue
- 节点类型:nodeType
三、xml文件的读取
1.读取xml元素节点
案例:查看Class_info.xml文件里的Class节点的属性(节点名称、节点值、节点类型)
输出结果:#【元素节点】 #导入minidom模块 from xml.dom import minidom #打开xml文件 dom = minidom.parse('Class_info.xml') #加载DOM对象元素(根元素) root = dom.documentElement #分别打印元素节点名称、节点值、节点类型 print(root.nodeName) print(root.nodeValue) print(root.nodeType)ClassNone12.读取xml文本节点
案例:分别打印出Class_info.xml里的学生和老师的详细信息(姓名,年龄,城市)
输出结果:#【文本节点】 #导入minnidom模块 from xml.dom import minidom #打开XML文件 dom = minidom.parse('Class_info.xml') #加载DOM对象元素 root = dom.documentElement #根据标签名称获取标签对象(定位到文本节点) names = root.getElementsByTagName('name') ages = root.getElementsByTagName('age') citys = root.getElementsByTagName('city') #分别打印显示XML文档标签对里面的内容 for i in range(3): print(names[i].firstChild.data) print(ages[i].firstChild.data) print(citys[i].firstChild.data) print('\n')Jack28BeijingCandy25ChengduHarry30Shanghai3.读取xml属性节点
案例:分别读取打印老师和学生的账号、密码
输出结果:#【属性节点】 from xml.dom import minidom dom = minidom.parse('Class_info.xml') root = dom.documentElement logins = root.getElementsByTagName('login') for i in range(2): print(logins[i].getAttribute('username')) print(logins[i].getAttribute('password')) print('\n')student123456teacher8888884.读取xml子节点
案例:读取子节点的相关属性
输出结果:#【子节点】 from xml.dom import minidom dom = minidom.parse('Class_info.xml') root = dom.documentElement tags = root.getElementsByTagName('student') print(tags[0].nodeName) print(tags[0].nodeType) print(tags[0].nodeValue)student1None
作者:Fighting_001
链接:https://www.jianshu.com/p/55ff3480d0fa
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
