Python 标准库之 xml.etree.ElementTree xml解析
Python 标准库之 xml.etree.ElementTree
tag:string对象,表示数据代表的种类,当为节点时为节点名称。
text:string对象,表示element的内容。
attrib:dictionary对象,表示附有的属性。
tail:string对象,表示element闭合之后的尾迹。
若干子元素(child elements)。
1 3 2 4
try:import xml.etree.cElementTree as ET except ImportError:import xml.etree.ElementTree as ET
<?xml version="1.0"?> <data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country> </data>
>>> import xml.etree.cElementTree as ET >>> tree = ET.ElementTree(file='doc1.xml') #载入数据 >>> root = tree.getroot() #获取根节点 <Element 'doc' at 0x11eb780>
root = ET.fromstring(country_data_as_string)
>>> for child in root: ... print child.tag, child.attrib ... country {'name': 'Liechtenstein'} country {'name': 'Singapore'} country {'name': 'Panama'}
或者直接使用索引寻找子节点:
>>> root[0][1].text '2008'
>>> root.findall("./country/neighbor") [<Element 'neighbor' at 0x14fa0f0>, <Element 'neighbor' at 0x14fa150>, <Element 'neighbor' at 0x14fa3f0>, <Element 'neighbor' at 0x14fa6c0>, <Element 'neighbor' at 0x14fa750>]
for event, elem in ET.iterparse(sys.argv[2]):if event == 'end':if elem.tag == 'location' and elem.text == 'Zimbabwe':count += 1elem.clear() # discard the 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) 删除子元素。
class xml.etree.ElementTree.ElementTree(element=None, file=None)element如果给定,则为新的ElementTree的根节点。
_setroot(element):用给定的element替换当前的根节点。慎用。
# 以下方法与Element类中同名方法近似,区别在于它们指定以根节点作为操作对象。
find(match)
findall(match)
findtext(match, default=None)
iter(tag=None)
iterfind(match)
parse(source, parser=None) 装载xml对象,source可以为文件名或文件类型对象
getroot() 获取根节点
write(file, encoding=“us-ascii”, xml_declaration=None, default_namespace=None,method=“xml”)
ET.Comment(text=None)
2. 生成一个element tree,通过sys.stdout输出,elem可以是元素树或单个元素。这个方法最好只用于debug。
ET.dump(elem)
ET.fromstring(text)
4. 从字符串的序列对象中解析xml文档。缺省parser为XMLParser,返回Element实例。V2.7中新加属性
ET.fromstringlist(sequence, parser=None)
5. 检查是否是一个element对象。
ET.iselement(element)
6. 将文件或包含xml数据的文件对象递增解析为element tree,并且报告进度。events是一个汇报列表,如果忽略,将只有end事件会汇报出来。
注意,iterparse()只会在看见开始标签的">"符号时才会抛出start事件,因此届时属性是已经定义了,但是text和tail属性在那时还没有定义,同样子元素也没有定义,因此他们可能不能被显示出来。如果你想要完整的元素,请查找end事件。
ET.iterparse(source, events=None, parser=None)
7. 将一个文件或者字符串解析为element tree。
ET.parse(source, parser=None)
8. 这个方法会创建一个特别的element,该element被序列化为一个xml处理命令。
ET.ProcessingInstruction(target, text=None)
9. 注册命名空间前缀。这个注册是全局有效,任何已经给出的前缀或者命名空间uri的映射关系会被删除。 V2.7新加属性
ET.register_namespace(prefix, uri)
10. 子元素工厂,创建一个Element实例并追加到已知的节点。
ET.SubElement(parent, tag, attrib={}, **extra)
11. 生成一个字符串来表示表示xml的element,包括所有子元素。element是Element实例,method为"xml", "html", "text"。 返回包含了xml数据的字符串。
ET.tostring(element, encoding="us-ascii", method="xml")
12. 生成一个字符串来表示表示xml的element,包括所有子元素。element是Element实例,method为"xml","html","text"。返回包含了xml数据的字符串列表。V2.7新添加属性
ET.tostringlist(element, encoding="us-ascii", method="xml")
13. 从一个字符串常量中解析出xml片段。返回Element实例。
ET.XML(text, parser=None)
14. 从字符串常量解析出xml片段,同时返回一个字典,用以映射element的id到其自身。
ET.XMLID(text, parser=None)
<div id="blog_post_info">
关注 - 70
粉丝 - 198
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/insane-Mr-Li/p/9952827.html" class="p_n_p_prefix">« </a> 上一篇: <a href="https://www.cnblogs.com/insane-Mr-Li/p/9952827.html" title="发布于 2018-11-13 16:16">python configparser模块</a>
<br>
<a href="https://www.cnblogs.com/insane-Mr-Li/p/9964249.html" class="p_n_p_prefix">» </a> 下一篇: <a href="https://www.cnblogs.com/insane-Mr-Li/p/9964249.html" title="发布于 2018-11-15 16:16">python的ConfigParser模块</a>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190919135954466.jpg)
Python 标准库之 xml.etree.ElementTree xml解析相关推荐
- python etree库_python 标准库之xml.etree.ElementTree
简介 Element类型是一种灵活的容器对象,用于在内存中存储结构化数据. [注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全. 每个element对象都具有以下属 ...
- xml 属性value换行显示_python 标准库之xml.etree.ElementTree
简介 Element类型是一种灵活的容器对象,用于在内存中存储结构化数据. [注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全. 每个element对象都具有以下属 ...
- Python标准库之xml.etree.ElementTree
1 2 3 4 创建元素的方法有Element或者SubElement(),前者称作元素的构建函数(constructor),用以构建任一独存的元素: 后者称作元 ...
- Python 标准库之 XML(下)
本文作者:Rocky0249 公众号:Python空间 写在之前 隔了1天了,不知道你们还记得上一篇文章的内容不,如果不记得的话请移步 -- Python 标准库之 XML(上). 今天我们继续来学习 ...
- python xml etree_python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别和基本使用...
1.解析速度:ElementTree在 Python 标准库中有两种实现.一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.c ...
- python【模块】xml.etree.ElementTree 解析 xml
pytho 模块 xml.etree.ElementTree 解析 xml 文章目录 pytho 模块 xml.etree.ElementTree 解析 xml 1. 什么是 XML? 2. Elem ...
- [PYTHON] xml.etree.ElementTree 实例
2019独角兽企业重金招聘Python工程师标准>>> --------------------------------------------------------------- ...
- 干货 | Python 标准库之 XML(上)
本文作者:Rocky0249 公众号:Python空间 写在之前 带分隔符的文件仅有两维的数据:行 & 列.如果我们想在程序之间交换数据结构,需要一种方法把层次结构,序列,集合和其它的数据结构 ...
- python 打印xml文档树_[Python]xml.etree.ElementTree处理xml文档
需求: 在实际应用中,需要对xml配置文件进行实时修改, 1.增加.删除 某些节点 2.增加,删除,修改某个节点下的某些属性 3.增加,删除,修改某些节点的文本 xml源文件格式[例] path=&q ...
最新文章
- 手撸一个JdbcTemplate,带你了解其原理
- 类别不平衡问题 —— 各种评估指标
- Orleans—一些概念
- 铜仁计算机专业学校,听说计算机专业的在本部啊 这是真的么
- 转一篇写的比较好的camera文档[Camera 图像处理原理分析]
- centos镜像 from_下载 CentOS 7 镜像文件
- RedHat 7配置keepalived+LVS实现高可用的Web负载均衡
- appium 环境配置
- java正则表达式爬图片_Java正则表达式爬取网页,贴出完整代码
- 《软件企业的管理与文化》读后感
- 二叉树的遍历--递归+非递归(两种)
- alter table add column多个字段_element中el-table单行暂无数据和整体暂无数据的默认修改...
- 稳定币usda是哪个发行的_什么是USDA?_USDA币介绍_USDA币种百科_创始团队和代币总量_蜜蜂查...
- 用友-凭证打印行数如何调整
- php实现前后端完全分离
- 《TCP/IP详解 卷1:协议》学习笔记(未完待续)
- java接口对带宽的要求,常见的接口带宽分析
- iOS 模拟微信内置浏览器CYWebViewController
- (vcom-1141) Identifier “<protected>“ does not identify a component declaration.
- Ubuntu kylin 14.04下的spark1.0.1安装