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处理中文编码和判断编码示例
Feb 26 Python
python私有属性和方法实例分析
Jan 15 Python
Python3指定路径寻找符合匹配模式文件
May 22 Python
用Python写冒泡排序代码
Apr 12 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
详解Python函数作用域的LEGB顺序
May 14 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
python构建指数平滑预测模型示例
Nov 21 Python
python 操作hive pyhs2方式
Dec 21 Python
Python批量启动多线程代码实例
Feb 18 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
php跨站攻击实例分析
2014/10/28 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
会计毕业生自荐书
2014/06/12 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
民事和解协议书格式
2014/11/29 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
六年级小学生评语
2014/12/26 职场文书
七一建党节慰问信
2015/02/14 职场文书
学生犯错保证书
2015/05/09 职场文书
撤诉书怎么写
2015/05/19 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL