简介

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

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

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

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

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

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

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

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

texttail

1 2 3 4

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

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

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

导入ElementTree

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

try:importxml.etree.cElementTree as ETexceptImportError:import xml.etree.ElementTree as ET

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

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

#从硬盘的xml文件读取数据importxml.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 inroot:

...printchild.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值。

Element对象

class xml.etree.ElementTree.Element(tag, attrib={}, **extra)

tag:string,元素代表的数据种类。

text:string,元素的内容。

tail:string,元素的尾形。

attrib:dictionary,元素的属性字典。

#针对属性的操作

clear():清空元素的后代、属性、text和tail也设置为None。

get(key, default=None):获取key对应的属性值,如该属性不存在则返回default值。

items():根据属性字典返回一个列表,列表元素为(key, value)。

keys():返回包含所有元素属性键的列表。

set(key, value):设置新的属性键与值。

#针对后代的操作

append(subelement):添加直系子元素。

extend(subelements):增加一串元素对象作为子元素。#python2.7新特性

find(match):寻找第一个匹配子元素,匹配对象可以为tag或path。

findall(match):寻找所有匹配子元素,匹配对象可以为tag或path。

findtext(match):寻找第一个匹配子元素,返回其text值。匹配对象可以为tag或path。

insert(index, element):在指定位置插入子元素。

iter(tag=None):生成遍历当前元素所有后代或者给定tag的后代的迭代器。#python2.7新特性

iterfind(match):根据tag或path查找所有的后代。

itertext():遍历所有后代并返回text值。

remove(subelement):删除子元素。

ElementTree对象

class xml.etree.ElementTree.ElementTree(element=None, file=None)

element如果给定,则为新的ElementTree的根节点。

_setroot(element):用给定的element替换当前的根节点。慎用。

# 以下方法与Element类中同名方法近似,区别在于它们指定以根节点作为操作对象。

find(match)

findall(match)

findtext(match, default=None)

getroot():获取根节点.

iter(tag=None)

iterfind(match)

parse(source, parser=None):装载xml对象,source可以为文件名或文件类型对象.

write(file, encoding="us-ascii", xml_declaration=None, default_namespace=None,method="xml")

模块方法

xml.etree.ElementTree.Comment(text=None)创建一个特别的element,通过标准序列化使其代表了一个comment。comment可以为bytestring或unicode。xml.etree.ElementTree.dump(elem)生成一个element tree,通过sys.stdout输出,elem可以是元素树或单个元素。这个方法最好只用于debug。xml.etree.ElementTree.fromstring(text)text是一个包含XML数据的字符串,与XML()方法类似,返回一个Element实例。xml.etree.ElementTree.fromstringlist(sequence, parser=None)从字符串的序列对象中解析xml文档。缺省parser为XMLParser,返回Element实例。

New in version 2.7.xml.etree.ElementTree.iselement(element)检查是否是一个element对象。xml.etree.ElementTree.iterparse(source, events=None, parser=None)将文件或包含xml数据的文件对象递增解析为element tree,并且报告进度。events是一个汇报列表,如果忽略,将只有end事件会汇报出来。

注意,iterparse()只会在看见开始标签的">"符号时才会抛出start事件,因此届时属性是已经定义了,但是text和tail属性在那时还没有定义,同样子元素也没有定义,因此他们可能不能被显示出来。如果你想要完整的元素,请查找end事件。xml.etree.ElementTree.parse(source, parser=None)将一个文件或者字符串解析为element tree。xml.etree.ElementTree.ProcessingInstruction(target, text=None)这个方法会创建一个特别的element,该element被序列化为一个xml处理命令。xml.etree.ElementTree.register_namespace(prefix, uri)注册命名空间前缀。这个注册是全局有效,任何已经给出的前缀或者命名空间uri的映射关系会被删除。

New in version 2.7.xml.etree.ElementTree.SubElement(parent, tag, attrib={}, **extra)子元素工厂,创建一个Element实例并追加到已知的节点。xml.etree.ElementTree.tostring(element, encoding="us-ascii", method="xml")生成一个字符串来表示表示xml的element,包括所有子元素。element是Element实例,method为"xml","html","text"。返回包含了xml数据的字符串。xml.etree.ElementTree.tostringlist(element, encoding="us-ascii", method="xml")生成一个字符串来表示表示xml的element,包括所有子元素。element是Element实例,method为"xml","html","text"。返回包含了xml数据的字符串列表。

New in version 2.7.xml.etree.ElementTree.XML(text, parser=None)从一个字符串常量中解析出xml片段。返回Element实例。xml.etree.ElementTree.XMLID(text, parser=None)从字符串常量解析出xml片段,同时返回一个字典,用以映射element的id到其自身。

python xml etree_Python 标准库之 xml.etree.ElementTree相关推荐

  1. python xml et_Python 标准库之 XML(下)

    本文字数:3253 字 阅读本文大概需要:9 分钟 写在之前 隔了两天了,不知道你们还记得上一篇文章的内容不,如果不记得的话请移步 -- Python 标准库之 XML(上). 今天我们继续来学习 X ...

  2. Python 标准库之 xml.etree.ElementTree xml解析

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

  3. Python 标准库之 XML(下)

    本文作者:Rocky0249 公众号:Python空间 写在之前 隔了1天了,不知道你们还记得上一篇文章的内容不,如果不记得的话请移步 -- Python 标准库之 XML(上). 今天我们继续来学习 ...

  4. python语言的标准库有哪些,python标准库函数有哪些

    PyFlux库函数是什么? PyFlux是Python编程语言的开源时间序列库.PyFlux是Python中为处理时间序列问题而创建的开源库. 该库有一系列极好的时间序列模型,包括但不限于 ARIMA ...

  5. python基础_026__标准库和第三方库

    一.标准库与第三方库 1.标准库与第三方库的区别,标准库是python自带的,可以直接import导入, 第三方库需要pip安装/pycharm中下载 之后使用 2. 以下是,python自带标准库里 ...

  6. 笔记——Python常用的标准库

    Python 语言通过模块(module)来组织代码.Python 标准库十分庞大,由C语言编写的内置模块,和由 Python 编写的解决常见开发需求的模块.下面的Python是一些标准库. 库名 作 ...

  7. python etree库_python 标准库之xml.etree.ElementTree

    简介 Element类型是一种灵活的容器对象,用于在内存中存储结构化数据. [注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全. 每个element对象都具有以下属 ...

  8. Python标准库之xml.etree.ElementTree

    1     2        3         4 创建元素的方法有Element或者SubElement(),前者称作元素的构建函数(constructor),用以构建任一独存的元素: 后者称作元 ...

  9. 干货 | Python 标准库之 XML(上)

    本文作者:Rocky0249 公众号:Python空间 写在之前 带分隔符的文件仅有两维的数据:行 & 列.如果我们想在程序之间交换数据结构,需要一种方法把层次结构,序列,集合和其它的数据结构 ...

  10. Python 基础 - Day 5 Learning Note - 模块 之 标准库:xml (9)

    xml 模块介绍 和json一样,适用于不同语言及程序的数据交换的协议.但是json用起来更简单,并有代替xml的趋势. 现在多数金融数据提供方(e.g. bloombegy)还在用xml的方式. 在 ...

最新文章

  1. C++ Primer 读书笔记 - 第十三章
  2. 系统架构设计师考试999999999999
  3. linux(2):linux命令查看开放哪些端口
  4. SVN移植、合库、分库
  5. 如何优化ASP.NET网站的性能
  6. 70个python毕设项目_这10个Python项目很有趣!
  7. 51单片机蓝牙模块的使用方法
  8. win10关闭windows聚焦_win10 系统中的windows聚焦是什么意思 - 卡饭网
  9. Android判断是否可以使用外网
  10. Scrum master成长笔记:如何为Scrum团队设定愿景目标?
  11. 深度终端:ubuntu等linux下好用的远程终端软件
  12. 什么是计算机网络 它有哪些主要功能,什么是计算机网络及主要功能有哪些?...
  13. 未来虚拟经济的雏形,SecondLife,全新的概念。。。
  14. 三阶行列式简便算法_三阶行列式是什么?如何计算?
  15. ubuntu下查看电脑硬件的基本信息
  16. MySQL数据库项目式教程思维导图
  17. 微信小程序 | 小程序的内置组件
  18. 如何阻止电脑下载安装垃圾软件?阻止电脑下载垃圾软件方法
  19. EduCoder-Linux与Python编程2021(顺序与选择结构)
  20. 浅谈Springcloud中的几个主流熔断器

热门文章

  1. Atitit xml xpath以及mybatis xml mapper脱机解析 目录 1.1. parseStt(String id, Element root) 1 1.2. parseStt
  2. atitit 高扩展性解决方案 功能扩展法 v2 t66.docx atitit 高扩展性解决方案.docx 1. 功能扩展 vs 性能扩展 2 1.1.       人无远虑,必有近忧。
  3. Atitit 软件设计中的各种图纸 uml 之道 1. 常见设计成果与图纸 2 1.1. 总图 2 1.2. ui原型图与html 2 1.3. 业务逻辑 伪代码 各种uml图 2 1.4. 总体
  4. Atitit 企业文化建设 职称体系建设 之道 attilax著 1. 职称 1 1.1. 职称级别 prc poc 设正高级、副高级、中级、助理级 1 2. Uke职称级别 资深 高级
  5. Atitit 提升效率 降低技术难度与提升技术矛盾的解决方案 1. 问题 2 1.1. 高手喜欢技术挑战怎么办,但会提升技术难度 导致新手不会用怎么办 2 2. 解决方案 2 2.1. 通过开会统
  6. Atitit 分布式之道 attilax著 第4章 通信 第7章 一致性和复制 第8章 容错性 第9章 安全性 第10章 基于对象的分布式系统 第11章 分布式文件系统 第12章 基于Web的分
  7. atitit.词法分析原理 词法分析器 (Lexer)
  8. Atitit.android播放smb 网络邻居视频文件解决方案
  9. PAIP.vs2010打开某个FORM窗体设计视图时崩溃时
  10. paip.租房宝付房租功能抓包总结