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支持断点续传的多线程下载示例
Jan 16 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
python config文件的读写操作示例
Sep 27 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
完美解决pycharm 不显示代码提示问题
Jun 02 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
python中的yield from语法快速学习
Nov 06 Python
Python3+Flask安装使用教程详解
Feb 16 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
php 学习资料零碎东西
2010/12/04 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
ThinkPHP之getField详解
2014/06/20 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
DOM精简教程
2006/10/03 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
jquery.validate使用详解
2016/06/02 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
浅谈JS的原型和继承
2019/05/08 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python变量和数据类型详解
2017/02/15 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
PageFactory设计模式基于python实现
2020/04/14 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
简历上的自我评价怎么写
2014/01/28 职场文书
六五普法宣传标语
2014/10/06 职场文书
校园广播稿100字
2014/10/06 职场文书
农村党员干部承诺书
2015/05/04 职场文书