Python xml文件处理
2024-09-07 06:40:26
什么是XML文件?
xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,具体如下:
- XML 被设计用来传输和存储数据
- HTML 被设计用来显示数据
创建xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Class>
<student>
<name>Nancy</name>
<age>23</age>
<city>Chengdu</city>
</student> <student>
<name>Anne</name>
<age>24</age>
<city>Chongqing</city>
</student> <student>
<name>Hugh</name>
<age>25</age>
<city>Beijing</city>
</student> <teacher>
<name>Bob</name>
<age>27</age>
<city>Shanghai</city>
</teacher> <account>
<login username="student" password="123456"/>
<login username="teacher" password="888888"/>
</account>
</Class>
XML节点
xml文件节点一般包含3类:
- 元素节点
- 文本节点
- 属性节点
每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
- nodeName(节点名称)
- nodeValue(节点值)
- nodeType(节点类型)
读取元素节点
案例:查看Class_info.xml文件里Class节点的属性(结点名称,节点的值、节点类型)
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) #获取节点类型,元素节点返回1,属性节点返回2
运行结果:
Class
None
1
读取文本节点的值
案例:分别打印出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)
运行结果:
Nancy
23
Chengdu
Anne
24
Chongqing
Hugh
25
Beijing
Bob
27
Shanghai
读取属性节点的值
案例:分别读取打印老师和学生的账号密码。
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')
password=logins[i].getAttribute('password')
print(username)
print(password)
运行结果:
student
123456
teacher
888888
读取子节点信息
案列:读取子节点<student>相关属性
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)
运行结果:
student
1
None
最新文章
- const 与 readonly知多少
- 什么是License
- Java学习记录-Jdk包简单介绍
- 在ArcGIS中如何进行POI点抽稀
- ecshop Admin后台删除(Ajxa删除,无跳转连接)
- 剑指Offer 包含min函数的栈
- iOS数据持久化文件读写之偏好设置
- iOS10 app连接不上网络的问题
- SQL Server2008 无法连接到 local
- (转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
- Node.js快速入门
- html中的table在android端显示
- Openjudge-计算概论(A)-角谷猜想
- 基于服务的SOA架构_后续篇
- Nodejs MSSQL详细解读
- [源码]解析 SynchronousQueue 上界,下界.. 数据保存和数据传递. 堵塞队列. 有无频繁await?
- Python新式类与经典类的区别
- java 返回某一天的周日和现在这一周的周日
- mysql分页查询按某类型置顶 按某类型置尾 再按优先级排序
- ubuntu-docker入门到放弃(八)创建支持SSH服务的镜像