Python XML文件概述

什么是xml文件?
Xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
从结构上,很像HTML超文本标记语言。但它们被设计的目的是不同的,具体如下:
XML被设计用来传输和存储数据
HTMl被设计用来显示数据。

<?xml version=”1.0” encoding=”utf-8”?> GEorge John

Xml特征
它是有标签对组成,
标签可以有属性:
标签对可以嵌入数据:abc
标签可以嵌入子标签(具有层级关系)

XML文件结构
XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”
第一行是XML声明。它是定义XML的版本(1.0)和所有使用的编码
是根元素,也称为根节点
是子元素(子节点)
XML文档必须包含根元素,该元素是所有其他元素的父元素

DOM文档对象模型
文档对象模型(Document Object Model,简称DOM),DOM就是针对和XML提供一个API,什么意思?就是为了能以编程的方法操作这个HTML的内容(比如添加某些元素、修改元素的内容、删除某些元素),我们把这个HTML或xml看做一个对象树(DOM树),它本身和里面的所有东西比如

这些标签都看做一个对象,每个对象都叫做一个节点(node)

DOM有什么用
就是为了操作HTML或XML中的元素,比如说我们要通过JS把这个网页的标题改了,直接这样就可以了。
Document.title=’51zxw’

手动创建一个xml文件
创建一个xml文件Class.xml用来存储班级学生(姓名,年龄、城市),老师(姓名、年龄、城市)、教务账号(学生和老师的账号、密码)等信息

<?xml vesion="1.0" encoding="UTF-8"?>
<Class>
	<student>
		<name>Jack</name>
		<age>28</age>
		<city>Beijing</city>
	</student>
	<student>
		<name>Bob</name>
		<age>25</age>
		<city>Shanghai</city>
	</student>
	<student>
		<name>Harry</name>
		<age>23</age>
		<city>Shenzhen</city>
	</student>
	
	<teacher>
		<name>Marry</name>
		<age>23</age>
		<city>Changsha</city>
	</teacher>
	
	<account>
		<login username="student" password="123456"/>
		<login username="teacher" password="888888"/>
	</account>
</Class>

Xml节点
Xml文件节点一般包含3类:
元素节点
文本节点
属性节点
每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
nodeName(节点名称)
nodeValue(节点值)
nodeType(节点类型)
读取元素节点

案例:查看Class_info.xml文件点的属性(结点名称、节点的值、节点类型)

from xml.dom import minidom

#打开xml文件
dom=minidom.parse('Class_info.xml')

root=dom.documentElement

#打印节点信息
print(root.nodeName)
print(root.nodeValue)
print(root.nodeType)

在这里插入图片描述
nodeName:节点名称
nodeValue:返回文本节点的值
nodeType:属性返回以数字值返回指定节点类型

读取文本节点的值
案例:分别打印Class_info.xml里的学生和老师的详细信息(姓名,年龄、城市)

from xml.dom import minidom
#获取标签对的值

#打开文件
dom=minidom.parse('Class_info.xml')

#获取文档对象元素
root=dom.documentElement

# 根据标签名称获取标签对象
names=root.getElementsByTagName('name')
ages=root.getElementsByTagName('age')
citys=root.getElementsByTagName('city')

# 分别打印显示xml文档标签对里面的内容
for i in range(4):
    print(names[i].firstChild.data)
    print(ages[i].firstChild.data)
    print(citys[i].firstChild.data)

在这里插入图片描述
读取属性节点的值
案例:分别读取打印老师和学生的账号密码

from xml.dom import minidom

dom=minidom.parse('Class_info.xml')

root=dom.documentElement

logins=root.getElementsByTagName('login')

# 获取login标签的username
for i in range(2):
    username=logins[i].getAttribute('username')
    print(username)
    password=logins[i].getAttribute('password')
    print(password)

在这里插入图片描述

读取子节点信息
读取子节点相关属性
nodeName(节点名称)
nodeValue(了点值)
nodeType(节点类型)

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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43264177/article/details/82906878