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中基于生成器的状态机
Apr 13 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
Python中字符串与编码示例代码
May 20 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
python实现简单的tcp 文件下载
Sep 16 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
python基于tkinter制作无损音乐下载工具
Mar 29 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实现的带超时功能get_headers函数
2015/02/10 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
Js四则运算函数代码
2012/07/21 Javascript
jQuery拖动图片删除示例
2013/05/10 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
Mac OS X 系统下安装和部署Egret引擎开发环境
2014/09/03 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
上海微创软件面试题
2012/06/14 面试题
工作人员思想汇报
2014/01/09 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
学校清洁工岗位职责
2015/04/15 职场文书
项目合作意向书
2015/05/08 职场文书
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript