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之私有函数和专有方法
Oct 24 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
Python 编程速成(推荐)
Apr 15 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
python代码实现猜拳小游戏
Nov 30 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP 输出缓存详解
2009/06/20 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python 实现登录网页的操作方法
2018/05/11 Python
python实现机器学习之元线性回归
2018/09/06 Python
python3人脸识别的两种方法
2019/04/25 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
基于Python测试程序是否有错误
2020/05/16 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
《菜园里》教学反思
2014/04/17 职场文书
北京故宫导游词
2015/01/31 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
朋友离别感言
2015/08/04 职场文书