Python标准库之xml.etree.ElementTree

简介

Element类型是一种灵活的容器对象,用于在内存中存储结构化数据。

[注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全。

每个element对象都具有以下属性:

1. tag:string对象,表示数据代表的种类。

2. attrib:dictionary对象,表示附有的属性。

3. text:string对象,表示element的内容。

4. tail:string对象,表示element闭合之后的尾迹。

5. 若干子元素(child elements)。

<tag attrib1=1>text</tag>tail

 1     2        3         4

创建元素的方法有Element或者SubElement(),前者称作元素的构建函数(constructor),用以构建任一独存的元素; 后者称作元素的制造函数(factory function),用以制造某一元素的子元素。

有了一串元素之后,使用ElementTree类来将其打包,把一串元素转换为xml文件或者从xml文件中解析出来。

若想加快速度,可以使用C语言编译的API xml.etree.cElementTree。

导入ElementTree

在使用xml.etree.ElementTree时,一般都按如下导入:

try:

   import xml.etree.cElementTree as ET

except ImportError:

   import xml.etree.ElementTree as ET

XML是中结构化数据形式,在ET中使用ElementTree代表整个XML文档,并视其为一棵树,Element代表这个文档树中的 单个节点。

ET对象具有多种方法从不同来源导入数据,如下:

#从硬盘的xml文件读取数据

import xml.etree.ElementTree as ET
tree = ET.parse('country_data.xml')    #载入数据
root = tree.getroot()    #获取根节点

#从字符串读取数据
root = ET.fromstring(country_data_as_string)

[注意]fromstring()是直接获取string对象中的根节点,因此以上root其实是一个Element。

作为一个Element对象,本身是具有子元素,因此可以直接对Element进行迭代取值:

>>> for child in root:
...   print child.tag, child.attrib
...
country {'name': 'Liechtenstein'}
country {'name': 'Singapore'}
country {'name': 'Panama'}

或者直接使用索引寻找子节点:
>>> root[0][1].text
'2008'

Element中的遍历与查询

Element.iter(tag=None):遍历该Element所有后代,也可以指定tag进行遍历寻找。

Element.findall(path):查找当前元素下tag或path能够匹配的直系节点。

Element.find(path):查找当前元素下tag或path能够匹配的首个直系节点。

Element.text: 获取当前元素的text值。

Element.get(key, default=None):获取元素指定key对应的属性值,如果没有该属性,则返回default值。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 对象
, importerror
, 节点
, 元素
, element
, etree
, xml.etree.ElementTree
ElementTree
etree.elementtree、python xml etree、python etree 生成xml、python etree 创建xml、python xml解析 etree,以便于您获取更多的相关知识。

时间: 2024-09-14 05:56:40

Python标准库之xml.etree.ElementTree的相关文章

python xml.etree.ElementTree遍历xml所有节点实例详解_python

python xml.etree.ElementTree遍历xml所有节点 XML文件内容: <students> <student name='刘备' sex='男' age='35'/> <student name='吕布' sex='男' age='38'/> <student name='貂蝉' sex='女' age='22'/> </students> 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 imp

Python标准库urllib2的一些使用细节总结_python

Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库.这里总结了一些 urllib2 的使用细节. 1.Proxy 的设置 2.Timeout 设置 3.在 HTTP Request 中加入特定的 Header 4.Redirect 5.Cookie 6.使用 HTTP 的 PUT 和 DELETE 方法 7.得到 HTTP 的返回码 8.Debug Log Proxy 的设置 urllib2 默认会使用

Python标准库——走马观花

原文:Python标准库--走马观花 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   Python的一大好处在于它有一套很有用的标准库(standard library).标准库是随着Python一起安装在你的电脑中的,是Python的一部分 (当然也有特殊情况.有些场合会因为系统安全性的要求,不使用全部的标准库,比如说Google App Engine).   利用已有的类(class)和函数(function)进行开发

Python 标准库 urllib2 的使用细节

文章转载自:http://zhuoqiang.me/python-urllib2-usage.html Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库.这里总结了一些 urllib2 的使用细节. Proxy 的设置 Timeout 设置 在 HTTP Request 中加入特定的 Header Redirect Cookie 使用 HTTP 的 PUT 和 DELETE 方法 得到 HTTP 的返

Python标准库之Sys模块使用详解

  这篇文章主要介绍了Python标准库之Sys模块使用详解,本文讲解了使用sys模块获得脚本的参数.处理模块.使用sys模块操作模块搜索路径.使用sys模块查找内建模块.使用sys模块查找已导入的模块等使用案例,需要的朋友可以参考下 sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sys模块获得脚本的参数 代码如下: print "script n

Python标准库defaultdict模块使用示例

  Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处. defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅. 首先是各大文章介绍的第一个例子: 代码如下: import collections as coll def default_factory(): return 'default value' d = coll.defaultd

Python标准库的学习准备

原文:Python标准库的学习准备 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   Python标准库是Python强大的动力所在,我们已经在前文中有所介绍.由于标准库所涉及的应用很广,所以需要学习一定的背景知识.   硬件原理 这一部份需要了解内存,CPU,磁盘存储以及IO的功能和性能,了解计算机工作的流程,了解指令的概念.这些内容基础而重要. Python标准库的一部份是为了提高系统的性能(比如mmap),所以有必要了

Python标准库11 多进程探索 (multiprocessing包)

原文:Python标准库11 多进程探索 (multiprocessing包) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   在初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具.这些工具可以让我们更加便利地实现多进程.   进程池 进程池 (Process Pool)可以创建多个进程.这些进程就像是随时待命的士兵,准备执行任务(程序).一个进程池中可以容纳多个待命的士兵.

Python标准库10 多进程初步 (multiprocessing包)

原文:Python标准库10 多进程初步 (multiprocessing包) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   我们已经见过了使用subprocess包来创建子进程,但这个包有两个很大的局限性:1) 我们总是让subprocess运行外部的程序,而不是运行一个Python脚本内部编写的函数.2) 进程间只通过管道进行文本交流.以上限制了我们将subprocess包应用到更广泛的多进程任务.(这样的比较实际是