什么是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类:

  1. 元素节点
  2. 文本节点
  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

最新文章

  1. const 与 readonly知多少
  2. 什么是License
  3. Java学习记录-Jdk包简单介绍
  4. 在ArcGIS中如何进行POI点抽稀
  5. ecshop Admin后台删除(Ajxa删除,无跳转连接)
  6. 剑指Offer 包含min函数的栈
  7. iOS数据持久化文件读写之偏好设置
  8. iOS10 app连接不上网络的问题
  9. SQL Server2008 无法连接到 local
  10. (转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
  11. Node.js快速入门
  12. html中的table在android端显示
  13. Openjudge-计算概论(A)-角谷猜想
  14. 基于服务的SOA架构_后续篇
  15. Nodejs MSSQL详细解读
  16. [源码]解析 SynchronousQueue 上界,下界.. 数据保存和数据传递. 堵塞队列. 有无频繁await?
  17. Python新式类与经典类的区别
  18. java 返回某一天的周日和现在这一周的周日
  19. mysql分页查询按某类型置顶 按某类型置尾 再按优先级排序
  20. ubuntu-docker入门到放弃(八)创建支持SSH服务的镜像

热门文章

  1. BZOJ 3224 SBT 普通平衡树
  2. 题解报告:hdu 2094 产生冠军
  3. 2018年全国多校算法寒假训练营练习比赛(第五场):A题:逆序数(树状数组or归并排序)
  4. Android内存堆上限Android的缺省值是16M(某些机型是24M)
  5. XmlPullParser接口详述
  6. poj3735Training little cats
  7. 关于C# DropDownList 动态加载数据笔记
  8. 12 DOM操作应用
  9. Android学习笔记(六) Activity和View基础
  10. Objective -C Categories