python ElementTree
文章目录
- 一、调用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相关推荐
- python elementtree 父节点_python-访问ElementTree节点父节点
python-访问ElementTree节点父节点 我正在使用内置的Python ElementTree模块. 访问子级很简单,但是父级或同级节点呢? -是否可以有效地完成而不遍历整个树? hoju ...
- python etree创建xml_利用 Python ElementTree 生成 xml的实例
Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: from xml.etree import Eleme ...
- python:ElementTree操作XML
http://blog.csdn.net/menglei8625/article/details/7494509 http://www.python.org/doc/current/library/x ...
- 使用 Python ElementTree 生成 xml
Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: 1 from xml.etree import Ele ...
- python elementtree 命名空间_用Python中的命名空间通过‘ElementTree’解析XML
莫回无 注对于Python的ElementTree标准库来说,这是一个有用的答案,而不需要使用硬编码的命名空间.要从XML数据中提取命名空间的前缀和URI,可以使用ElementTree.iterpa ...
- python elementtree乱码_Python中使用ElementTree解析xml
在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...
- Python ElementTree 解析 xml文件
文章目录 一.xml文件结构 二.基础解析 1.加载文档 2.获取根元素 3.根元素的属性 4.遍历其直接子元素 5.通过索引值来访问特定的子元素 查找需要的元素 三.支持通过XPath查找元素 四. ...
- python elementtree乱码_python ElementTree
每个element对象都具有以下属性: 1. tag:string对象,表示数据代表的种类. 2. attrib:dictionary对象,表示附有的属性. 3. text:string对象,表示el ...
- python ElementTree解析xml
import xml.etree.ElementTree as ETtree = ET.parse(args.test_file) root = tree.getroot()for m in root ...
最新文章
- python中lambda 表达式(无参数、一个参数、默认参数、可变参数(*args、**kwargs)、带判断的lambda、列表使用lambda)
- 怎么安装linux系统 硬盘,如何实现硬盘安装linux系统
- 布局覆盖 超出一部分_Android 布局优化
- 搭建oracleRAC详解(裸设备)
- 孤儿进程与僵尸进程[总结]
- 真香啊!基于SpringBoot 的CMS系统,拿去开发企业官网
- Python函数默认参数陷阱
- 【实用】ABAP邮件发送(HTML+Attachment)
- 中国电信到美国的几条海缆线路图
- 四大逆向工程软件简介
- python2.7详细安装教程_python2.7安装图文教程
- dlna android电视,DLNA推送安卓手机投屏电视
- openpcdet KeyError: ‘road_plane‘
- 计算机相关设备巡检表,电脑维护巡检方案
- mysql8并行查询_并行查询(Parallel Query)
- FastReport VCL开发人员手册:自定义报表组件编写
- python - 1024 Spider
- 赛码网输入输出(js v8)问题并配置赛码网vscode本地环境
- Unity Profiler
- python为什么运行不了_python为什么安装了运行不了?
热门文章
- 时钟同步问题:warning: Clock skew detected. Your build may be incomplete.
- 小程序 writeFile参数filePath要怎么写
- C语言、Python和MATLAB区别
- 【深入理解java虚拟机】 - JVM垃圾回收算法
- Spring5学习笔记——day03
- 六年级下册计算机电子板报教案,六年级下册信息技术教案11制作电子小报|浙江摄影版(新)...
- js中获取dom元素高度
- 【论文模型讲解】多模态对话 Multimodal Dialogue Response Generation
- 软件长寿法则 记住这7条
- Few-shot Learning 小白入门笔记