文章目录

  • 一、调用parse()方法,返回解析树
  • 二、调用from_string(),返回解析树的根元素
  • 三、调用ElementTree类ElementTree(self, element=None, file=None) # 这里的element作为根节点
  • 四、遍历
  • Element对象方法
  • xml.etree.ElementTree.Element 属性相关
  • ElementTree对象
  • 五、模块方法
  • 在ET上使用xpath

ElementTree将整个XML文档表示为树,并 Element表示此树中的单个节点。与整个文档的交互(读取和写入文件)通常在ElementTree关卡上完成。与单个XML元素及其子元素的交互在该Element级别上完成。

一、调用parse()方法,返回解析树

try:import xml.etree.cElementTree as ET
except ImportError:import xml.etree.ElementTree as ETtree = ET.parse('country.xml')
# <xml.etree.ElementTree.ElementTree object at 0x00000230D5DDF1C0>
root = tree.getroot()
# <Element 'data' at 0x0000021AE8F79540>  type:<class 'xml.etree.ElementTree.Element'>

二、调用from_string(),返回解析树的根元素

import xml.etree.ElementTree as ET
data = open("country.xml").read()
root = ET.fromstring(data)   # <Element 'data' at 0x036168A0>

三、调用ElementTree类ElementTree(self, element=None, file=None) # 这里的element作为根节点

import xml.etree.ElementTree as ET
tree = ET.ElementTree(file="country.xml")  # <xml.etree.ElementTree.ElementTree object at 0x03031390>
root = tree.getroot()  # <Element 'data' at 0x030EA600>

四、遍历

import xml.etree.ElementTree as ETtree = ET.parse("country.xml")
root = tree.getroot()# 遍历xml文档的第二层
for child in root:# 第二层节点的标签名称和属性print(child.tag,":", child.attrib) # 遍历xml文档的第三层for children in child:# 第三层节点的标签名称和属性print(children.tag, ":", children.attrib)

Element对象方法

类方法 作用
Element.getchildren()
Element.getiterator(tag=None)
Element.iter(tag=None) 遍历该Element所有后代,也可以指定tag进行遍历寻找。
Element.iterfind(path, namespaces=None) 根据tag或path查找所有的后代。
Element.itertext() 遍历所有后代并返回text值。
Element.findall(path) 查找当前元素下tag或path能够匹配的直系节点。
Element.findtext(path, default=None, namespaces=None) 寻找第一个匹配子元素,返回其text值。匹配对象可以为tag或path。
Element.find(path) 查找当前元素下tag或path能够匹配的首个直系节点。
Element.text 获取当前元素的text值。
Element.get(key, default=None) 获取元素指定key对应的属性值,如果没有该属性,则返回default值。
Element.keys() 返回元素属性名称列表
Element.items() 返回(name,value)列表
Element.getiterator(self, tag=None)

注意:Element.findall()或者Element.find()方法,只会从结点的直接子结点中查找,并不会递归查找。

示例:过滤出所有neighbor标签

# 过滤出所有neighbor标签
for neighbor in root.iter("neighbor"):print(neighbor.tag, ":", neighbor.attrib)

示例:遍历所有的counry标签

# 遍历所有的counry标签
for country in root.findall("country"):# 查找country标签下的第一个rank标签rank = country.find("rank").text# 获取country标签的name属性name = country.get("name")print(name, rank)

xml.etree.ElementTree.Element 属性相关

类成员 获取方法
节点名(tag)(str) Element.tag
属性(attributes)(dict) Element.attrib
文本(text)(str) Element.text
附加文本(tail) (str) Element.tail
子节点列表(list) Element[:]

ElementTree对象

以下方法与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”)

五、模块方法

函数方法 Value
xml.etree.ElementTree.canonicalize(xml_data=None, *, out=None, from_file=None, **options)
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, parser=None) text是一个包含XML数据的字符串,与XML()方法类似,返回一个Element实例。
xml.etree.ElementTree.fromstringlist(sequence, parser=None) 从字符串的序列对象中解析xml文档。缺省parser为XMLParser,返回Element实例。
xml.etree.ElementTree.indent(tree, space=’ ', level=0)
xml.etree.ElementTree.iselement(element) 检查是否是一个element对象。
xml.etree.ElementTree.iterparse(source, events=None, parser=None) 将文件或包含xml数据的文件对象递增解析为element tree,并且报告进度。events是一个汇报列表,如果忽略,将只有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的映射关系会被删除。
xml.etree.ElementTree.SubElement(parent, tag, attrib={}, **extra) 子元素工厂,创建一个Element实例并追加到已知的节点。
xml.etree.ElementTree.tostring(element, encoding=‘us-ascii’, method=‘xml’, *, xml_declaration=None, default_namespace=None, short_empty_elements=True) 生成一个字符串来表示表示xml的element,包括所有子元素。element是Element实例,method为"xml",“html”,“text”。返回包含了xml数据的字符串。
xml.etree.ElementTree.tostringlist(element, encoding=‘us-ascii’, method=‘xml’, *, xml_declaration=None, default_namespace=None, short_empty_elements=True) 生成一个字符串来表示表示xml的element,包括所有子元素。element是Element实例,method为"xml",“html”,“text”。返回包含了xml数据的字符串列表。
xml.etree.ElementTree.XML(text, parser=None) 从一个字符串常量中解析出xml片段。返回Element实例。
xml.etree.ElementTree.XMLID(text, parser=None) 从字符串常量解析出xml片段,同时返回一个字典,用以映射element的id到其自身。

在ET上使用xpath

try:import xml.etree.cElementTree as ET
except ImportError:import xml.etree.ElementTree as ETif __name__ == "__main__":tree = ET.parse('country.xml')root = tree.getroot()  # 获取根# print(root, type(root))xml_str = ET.tostring(root)root = ET.fromstring(xml_str)# Top-level elements(当前节点就是根节点)root.findall(".")# All 'neighbor' grand-children of 'country' children of the top-level# elementsroot.findall("./country/neighbor")# Nodes with name='Singapore' that have a 'year' childroot.findall(".//year/..[@name='Singapore']")# 'year' nodes that are children of nodes with name='Singapore'root.findall(".//*[@name='Singapore']/year")# All 'neighbor' nodes that are the second child of their parentroot.findall(".//neighbor[2]")

python ElementTree相关推荐

  1. python elementtree 父节点_python-访问ElementTree节点父节点

    python-访问ElementTree节点父节点 我正在使用内置的Python ElementTree模块. 访问子级很简单,但是父级或同级节点呢? -是否可以有效地完成而不遍历整个树? hoju ...

  2. python etree创建xml_利用 Python ElementTree 生成 xml的实例

    Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: from xml.etree import Eleme ...

  3. python:ElementTree操作XML

    http://blog.csdn.net/menglei8625/article/details/7494509 http://www.python.org/doc/current/library/x ...

  4. 使用 Python ElementTree 生成 xml

    Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: 1 from xml.etree import Ele ...

  5. python elementtree 命名空间_用Python中的命名空间通过‘ElementTree’解析XML

    莫回无 注对于Python的ElementTree标准库来说,这是一个有用的答案,而不需要使用硬编码的命名空间.要从XML数据中提取命名空间的前缀和URI,可以使用ElementTree.iterpa ...

  6. python elementtree乱码_Python中使用ElementTree解析xml

    在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...

  7. Python ElementTree 解析 xml文件

    文章目录 一.xml文件结构 二.基础解析 1.加载文档 2.获取根元素 3.根元素的属性 4.遍历其直接子元素 5.通过索引值来访问特定的子元素 查找需要的元素 三.支持通过XPath查找元素 四. ...

  8. python elementtree乱码_python ElementTree

    每个element对象都具有以下属性: 1. tag:string对象,表示数据代表的种类. 2. attrib:dictionary对象,表示附有的属性. 3. text:string对象,表示el ...

  9. python ElementTree解析xml

    import xml.etree.ElementTree as ETtree = ET.parse(args.test_file) root = tree.getroot()for m in root ...

最新文章

  1. python中lambda 表达式(无参数、一个参数、默认参数、可变参数(*args、**kwargs)、带判断的lambda、列表使用lambda)
  2. 怎么安装linux系统 硬盘,如何实现硬盘安装linux系统
  3. 布局覆盖 超出一部分_Android 布局优化
  4. 搭建oracleRAC详解(裸设备)
  5. 孤儿进程与僵尸进程[总结]
  6. 真香啊!基于SpringBoot 的CMS系统,拿去开发企业官网
  7. Python函数默认参数陷阱
  8. 【实用】ABAP邮件发送(HTML+Attachment)
  9. 中国电信到美国的几条海缆线路图
  10. 四大逆向工程软件简介
  11. python2.7详细安装教程_python2.7安装图文教程
  12. dlna android电视,DLNA推送安卓手机投屏电视
  13. openpcdet KeyError: ‘road_plane‘
  14. 计算机相关设备巡检表,电脑维护巡检方案
  15. mysql8并行查询_并行查询(Parallel Query)
  16. FastReport VCL开发人员手册:自定义报表组件编写
  17. python - 1024 Spider
  18. 赛码网输入输出(js v8)问题并配置赛码网vscode本地环境
  19. Unity Profiler
  20. python为什么运行不了_python为什么安装了运行不了?

热门文章

  1. 时钟同步问题:warning: Clock skew detected. Your build may be incomplete.
  2. 小程序 writeFile参数filePath要怎么写
  3. C语言、Python和MATLAB区别
  4. 【深入理解java虚拟机】 - JVM垃圾回收算法
  5. Spring5学习笔记——day03
  6. 六年级下册计算机电子板报教案,六年级下册信息技术教案11制作电子小报|浙江摄影版(新)...
  7. js中获取dom元素高度
  8. 【论文模型讲解】多模态对话 Multimodal Dialogue Response Generation
  9. 软件长寿法则 记住这7条
  10. Few-shot Learning 小白入门笔记