python 读取xml中的值_Python读取XML文件内容

本文介绍了XML的基本概念和语法规则,并详细讲解了Python中使用DOM解析XML的方法,包括读取XML文件、获取元素、属性、文本值等操作,还提供了具体的代码示例。
摘要由CSDN通过智能技术生成

XML 指的是可扩展标记语言(eXtensible Markup Language),和json类似也是用于存储和传输数据,还可以用作配置文件。类似于HTML超文本标记语言,但是HTML所有的标签都是预定义的,而xml的标签可以随便定义。

XML元素

指从开始标签到结束标签的部分(均包括开始和结束)

一个元素可以包括:

其它元素

属性

文本

abc

混合以上所有

XML语法规则

所有的元素都必须有开始标签和结束标签,省略结束标签是非法的。如:

根元素

大小写敏感,以下是两个不同的标签

this is a test1

this is a test2

xml文档必须有根元素

this is a test2

joy

XML必须正确嵌套,父元素必须完全包住子元素。如:

this is a test2

XML属性值必须加引号,元素的属性值都是一个键值对形式。如:

注意:元素book的category属性值python必须用引号括起来,单引号双引号都可以。如果属性值中包含单引号那么用双引号括起来,如果属性值包含单引号那么外面用双引号括起来。

XML命名规则

名称可以包含字母、数字以及其他字符

名称不能以数字或标点符号开头

名称不能以字母xml或XML开始

名称不能包含空格

可以使用任何名称,没有保留字

名称应该具有描述性,简短和简单,可以同时使用下划线。

避免“-”、“.”、“:”等字符

Xml的注释格式

Python对XML的解析

常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,使用场合也不同。python有三种方法解析XML:SAX,DOM和ElementTree

DOM(Document Object Model)

DOM的解析器在解析一个XML文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后利用DOM提供的不同函数来读取该文档的内容和结构,也可以把修改过的内容写入XML文件。由于DOM是将XML读取到内存,然后解析成一个树,如果要处理的XML文本比较大的话,就会很耗内存,所以DOM一般偏向于处理一些小的XML,(如配置文件)比较快。

SAX(simple API for XML)

Python标准库中包含SAX解析器,SAX是用的是事件驱动模型,通过在解析XML过程

中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

解析的基本过程:

读到一个XML开始标签,就会开始一个事件,然后事件就会调用一系列的函数去处理

一些事情,当读到一个结束标签时,就会触发另一个事件。所以,我们写XML文档入

如果有格式错误的话,解析就会出错。

这是一种流式处理,一边读一边解析,占用内存少。适用场景如下:

1、对大型文件进行处理;

2、只需要文件的部分内容,或者只需从文件中得到特定信息。

3、想建立自己的对象模型的时候。

ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)

xml.dom解析XML

本次先介绍DOM方式操作XML,先建立名为book.xml的文件供后续使用。

learning math

张三

561

learning Python

李四

600

minidom.parse(parse=None,bufsie=None)

函数作用:使用parse解析器打开xml文档,并将其解析为DOM文档,也就是内存中的一棵树,并得到这个对象

doc.documentElement

获取xml文档对象,就是拿到DOM树的根

代码示例:

>>> from xml.dom.minidom import parse

>>> DOMTree=parse(r'book.xml')

>>> type(DOMTree)

>>> booklist=DOMTree.documentElement

>>> booklist

doc.toxml(encoding=None)

返回xml的文档内容

>>> booklist=DOMTree.documentElement

>>> print (booklist.toxml())

learning math

张三

561

learning Python

李四

600

node.lastChild

返回元素的最后一个子节点

node.firstChild

返回元素的首个子节点

代码示例:

>>> booklist.lastChild

>>> booklist.firstChild

getElementsByTagName(name)获取节点元素

获取xml文档中的某个父节点下具有相同节点名的节点对象的集合。返回的是list

代码示例:

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree=parse(r'book.xml')

#获取xml文档对象,就是拿到树的根

booklist=DOMTree.documentElement

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值