python xml解析实例详解


Posted in Python onNovember 14, 2016

python xml解析

first.xml 

<info> 
<person > 
<id>1</id> 
<name>fsy</name> 
<age >24</age> 
</person> 
<person> 
<id>2</id> 
<name>jianjian</name> 
<age>24</age> 
</person> 
<count id ='1'>1000</count> 
</info>

from xml.etree import ElementTree as etree 

读入

def read_xml(file): 
# parse()函数会返回一个能代表整篇文档的对象。这不是根元素。要获得根元素的引用可以调用getroot()方法。 
tree = etree.parse(file) 
root = tree.getroot() 
return root

得到信息

def print_node(node): 
'''''打印结点基本信息''' 
print("node.tag:%s" % node.tag) 
print("node.attrib:%s"%node.attrib) 
print( "node.text:%s" % node.text)

搜索:

find_all 
>>> root = read_xml ('first.xml')   
>>> res = root.findall("person") 
[<Element 'person' at 0x00000000033388B8>, <Element 'person' at 0x0000000003413D68>] 
 
注意:findall只查询直接的子节点 
>>> r1 = root.findall("id") 
>>> r1 
[] 
>>> r =tree.findall(".//id") 
>>> for e in r: 
  print( e,e.text) 
 
 
<Element 'id' at 0x00000000034279F8> 1 
<Element 'id' at 0x0000000003427B38> 2

find:

#find()方法用来返回第一个匹配到的元素。当我们认为只会有一个匹配,或者有多个匹配但我们只关心第一个的时候,这个方法是很有用的。 
>>> res[0].find("id") 
<Element 'id' at 0x0000000003413CC8> 
>>> print_node(res[0].find("id")) 
node.tag:id 
node.attrib:{} 
node.text:1

find查找失败:

使用find要注意在布尔上下文中,如果ElementTree元素对象不包含子元素,其值则会被认为是False(即如果len(element)等于0)。这就意味着if element.find('...')并非在测试是否find()方法找到了匹配项;这条语句是在测试匹配到的元素是否包含子元素。想要测试find()方法是否返回了一个元素,则需使用if element.find('...') is not None。

>>> bk = res[0].find("no") 
>>> bk 
>>> type(bk) 
<class 'NoneType'> 
>>> res[0].find("id") 
<Element 'id' at 0x0000000003413CC8> 
>>> if res[0].find("id"): 
    print("find") 
  else: 
    print("not find") 
not find 
>>> if res[0].find("id") is not None: 
    print("find") 
  else: 
    print("not find") 
find

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
在Python中使用SQLite的简单教程
Apr 29 Python
Python实现模拟时钟代码推荐
Nov 08 Python
python基于ID3思想的决策树
Jan 03 Python
python之django母板页面的使用
Jul 03 Python
Flask框架Flask-Login用法分析
Jul 23 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Flask框架钩子函数功能与用法分析
Aug 02 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
pycharm软件实现设置自动保存操作
Jun 08 Python
python中的django是做什么的
Jul 31 Python
python入门基础之用户输入与模块初认识
Nov 14 #Python
详解Python多线程
Nov 14 #Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 #Python
Python端口扫描简单程序
Nov 10 #Python
Python迭代和迭代器详解
Nov 10 #Python
python通过cookie模拟已登录状态的初步研究
Nov 09 #Python
Python内置函数OCT详解
Nov 09 #Python
You might like
星际争霸兵种名称对照表
2020/03/04 星际争霸
Oracle 常见问题解答
2006/10/09 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
Python httplib,smtplib使用方法
2008/09/06 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
Python txt文件如何转换成字典
2020/11/03 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
优秀士兵先进事迹
2014/02/06 职场文书
保护动物倡议书
2014/04/15 职场文书
解除劳动合同协议书
2014/09/17 职场文书
廉政承诺书
2015/01/19 职场文书
小学英语听课心得体会
2016/01/14 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript