博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python模块之xml.etree.ElementTree
阅读量:4597 次
发布时间:2019-06-09

本文共 3075 字,大约阅读时间需要 10 分钟。

xml.etree.ElementTree用于解析和构建XML文件

1
2008
141100
4
2011
59900
68
2011
13600

解析XML文件

parse()函数,从xml文件返回ElementTree

from xml.etree.ElementTree import parsetree = parse('demo.xml')  //获取ElementTreeroot = tree.getroot()   // 获取根元素

Element.tag 、Element.attrib、Element.text

In [6]: root.tagOut[6]: 'data'In [7]: root.attribOut[7]: {}In [25]: root.textOut[25]: '\n    '

for child in root  迭代获得子元素

In [8]: for child in root:   ...:     print(child.tag, child.attrib)   ...:     country {'name': 'Liechtenstein'}country {'name': 'Singapore'}country {'name': 'Panama'}

Element.get()  获得属性值

In [27]: for child in root:    ...:     print (child.tag, child.get('name'))    ...:     country Liechtensteincountry Singaporecountry Panama

root.getchildren()  获得直接子元素

In [21]: root.getchildren()Out[21]: [
,
,
]

root[0][1]  根据索引查找子元素

In [9]: root[0][1].textOut[9]: '2008'In [10]: root[1][0].textOut[10]: '4'

root.find() 根据tag查找直接子元素,返回查到的第一个元素

In [13]: root.find('country').attribOut[13]: {'name': 'Liechtenstein'}

root.findall()    根据tag查找直接子元素,返回查到的所有元素的列表

In [16]: for country in root.findall('country'):    ...:     print  (country.attrib)    ...:     {'name': 'Liechtenstein'}{'name': 'Singapore'}{'name': 'Panama'}

root.iterfind()   根据tag查找直接子元素,返回查到的所有元素的生成器

In [22]: root.iterfind('country')Out[22]: 
.select at 0x7f6736dccfc0> 

支持的XPath语句(XML Path)

In [19]: root.findall('.//rank')  //查找任意层次元素Out[19]: [
,
,
]In [32]: root.findall('country/*') //查找孙子节点元素Out[32]: [
,
,
,
,
,
,
,
,
,
,
,
,
,
]In [33]: root.findall('.//rank/..') // ..表示父元素Out[33]: [
,
,
]In [34]: root.findall('country[@name]') // 包含name属性的countryOut[34]: [
,
,
]In [35]: root.findall('country[@name="Singapore"]') // name属性为Singapore的countryOut[35]: [
]In [36]: root.findall('country[rank]') // 孩子元素中包含rank的countryOut[36]: [
,
,
]In [37]: root.findall('country[rank="68"]') // 孩子元素中包含rank且rank元素的text为68的countryOut[37]: [
]In [38]: root.findall('country[1]') // 第一个countryOut[38]: [
]In [39]: root.findall('country[last()]') // 最后一个countryOut[39]: [
]In [40]: root.findall('country[last()-1]') // 倒数第二个countryOut[40]: [
]

root.iter()  递归查询指定的或所有子元素 

In [29]: root.iter()Out[29]: <_elementtree._element_iterator at 0x7f67355dd728>In [30]: list(root.iter())Out[30]: [
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
]In [31]: list(root.iter('rank'))Out[31]: [
,
,
]

  

转载于:https://www.cnblogs.com/Peter2014/p/8065114.html

你可能感兴趣的文章
mac os x mysql 出现./mysql: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 问题...
查看>>
桐桐的贸易--WA
查看>>
历届试题 高僧斗法
查看>>
linux命令系列 stat & touch
查看>>
[Tools] Webstorm Github的配置与使用
查看>>
鬼谷子绝学
查看>>
Mongodb 笔记04 特殊索引和集合、聚合、应用程序设计
查看>>
使用Post/Redirect/Get实现Asp.net防止表单重复提交
查看>>
用Html5与Asp.net MVC上传多个文件
查看>>
lambda函数,常用函数,内置函数(string,zip()map()filter())的用法
查看>>
Xcode中匹配的配置包的存放目录
查看>>
JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
查看>>
CSS3.0——背景属性
查看>>
超棒的CSS3动画页面过渡效果
查看>>
【转】性能测试、负载测试、压力测试的区别
查看>>
hdu5863_dp+矩阵快速幂
查看>>
运算符
查看>>
【转载】C语言中的undefined behavior/unspecified behavior - 序
查看>>
MySQL服务使用
查看>>
C语言练手自己编写学生成绩管理系统
查看>>