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

Python xml文件处理的更多相关文章

  1. python - XML文件及其操作

    xml文件也是实现不同语言或者程序之间进行数据交换的协议,它的特点是尖括号开头,尖括号结尾.使用范围就更为广泛了,tomcat resin kvm 等等,使用了大量的xml文件来进行相关配置.先来看一 ...

  2. python XML文件解析:用xml.dom.minidom来解析xml文件

    python解析XML常见的有三种方法: 一是xml.dom.*模块,是W3C DOM API的实现,若需要处理DOM API则该模块很合适, 二是xml.sax.*模块,它是SAX API的实现,这 ...

  3. python xml文件解析 及生成xml文件

    #解析一个database的xml文件 """ <databaselist type="database config"> <dat ...

  4. python XML文件解析:用ElementTree解析XML

    Python标准库中,提供了ET的两种实现.一个是纯Python实现的xml.etree.ElementTree,另一个是速度更快的C语言实现xml.etree.cElementTree.请记住始终使 ...

  5. python xml文件解析

    参考链接:http://www.runoob.com/python/python-xml.html

  6. python处理xml文件

    参考:https://docs.python.org/2/library/xml.etree.elementtree.html 例子: <?xml version="1.0" ...

  7. python 生成 xml文件 属性的顺序问题

    需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...

  8. python读取xml文件

    关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...

  9. python 解析xml 文件: Element Tree 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

随机推荐

  1. _bzoj3223 Tyvj 1729 文艺平衡树【Splay】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3223 裸的,打个标记. #include <cstdio> #include & ...

  2. C# 基础知识和VS2010的小技巧总汇(2)[转]

    1.使用关键字readonly ,表示这个字段只能在执行构造函数的过程中赋值,或者由初始化语句赋值 2..net4.0新增一个  Tuple 类,代表一个有序的N元组.可以调用Tuple.Create ...

  3. Struts2 第三个程序 namespacce的用法

    1.创建web项目,添加struts2支持的类库,在web.xml中配置struts2过滤器. 2.创建名为UserAction的Action对象,并分别在其中编写add()和update()方法,用 ...

  4. [BZOJ2002][Hnoi2010]Bounce弹飞绵羊 LCT

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 建图,每次往后面跳就往目标位置连边,将跳出界的点设为同一个点.对于修改操作发现可以用 ...

  5. Spring------IOC&DI

    一.Spring? Spring兴起:2003年,由Rod Johnson创建.总的来说,Spring Framwork从它诞生至今都一直为人所称道,它的伟大之处自此可见一斑. 核心:IOC& ...

  6. 虚拟机下安装 CentOS 7 的几个小问题

    ※ 网络问题(Destination Host Unreachable) 安装时网络选择的"桥接"模式, 安装完毕,并配置IP地址后,发现只能ping通自己,局域网内的其他IP无法 ...

  7. 21全志r58m平台的framework在使用过程中会莫名的崩溃掉

    21全志r58m平台的framework在使用过程中会莫名的崩溃掉 2018/10/25 16:20 版本:V1.0 开发板:SC5806 1.系统编译: rootroot@cm88:/home/ww ...

  8. 在action中将字符串、对象、list集合保存到值栈中,在jsp页面中获取的方法

    转自:csdn 封装对象User,属性有id,username,email等1.1:在action中将字符串保存到值栈中   1.1.1 获取值栈对象         ValueStack stack ...

  9. 编写高质量Python代码的59个有效方法

    Python学习资料或者需要代码.视频加Python学习群:960410445 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,p ...

  10. ALTER OPERATOR CLASS - 修改一个操作符表的定义

    SYNOPSIS ALTER OPERATOR CLASS name USING index_method RENAME TO newname DESCRIPTION 描述 ALTER OPERATO ...