python里遍历筛选xml文件_Python之xml文件处理(一)——使用ElementTree遍历xml

本文介绍了Python中处理XML的一种方式——ElementTree模块。通过示例代码展示了如何读取XML内容,遍历元素、获取属性、查找子元素等操作,适用于处理XML文件或字符串。
摘要由CSDN通过智能技术生成

发现python上有关xml的实现方法还是蛮多的,第三方的框架也不少,但是其中没有像dom4j那样名声响亮的框架。所以,还是中规中居地介绍python的故有方法吧。

今天,先介绍一个ElementTree,看着还顺眼些。详细说明在代码注释中,结果在后面。

#coding:utf-8

'''

Created on 2015年1月12日

@author: neil

'''

from xml.etree import ElementTree

#xml内容以文件形式传入

#filepath=''

# with open(filepath,'rt') as f:

#     tree=ElementTree.parse(f)

#xml内容以字符串形式传入

tree=ElementTree.fromstring('''<?xml  version="1.0" encoding="utf-8"?>

4尾巴

Python测试ZopeJJJ

sdfsdfsdfs

''')

for node in tree.iter():#深度搜索、树的先序遍历

print type(node)

print 'tag:',node.tag#元素标签名

print 'tail:',node.tail#后面的字符串,多半是回车换行。根结点的结束标签后面文档结束,所以是None。

print 'attrib:',node.attrib#字典类型,字典的项对应元素属性,字典的键对应属性名称,字典的值对应属性值

print 'attrib-id-default:',node.attrib.get('id','NULL')#字典方法,按键取值,如果键不存在,就取默认值。默认值由第二个参数规定。

print 'attrib-id:',node.attrib.get('id')#字典方法,按键取值,如果键不存在,就取None,不会报错。

print 'attrib.items:',node.attrib.items()#二元元组的列表,列表的每一个项是一个二元元组,元组的前一个值是xml元素属性的名称,后一个值是属性的值。

print 'attrib.keys:',node.attrib.keys()#以列表的形式列举元素的所有属性名称

print 'find-caption:',node.find('caption')#只在该结点的所有子节点中选择符合元素名称的第一个子节点

print 'find-item:',node.find('item')

print 'findall:',node.findall('caption')#只在该结点的所有子节点中选择符合元素名称的所有子节点,范围类型为列表

print 'findtext-caption:',node.findtext('caption')#只在该结点的所有子节点中选择符合元素内容的第一个子节点

print 'getchildren:',node.getchildren() #所有子节点以列表形式给出

print 'iter:',node.iter()

for n in node.iter():#深度搜索、树的先序遍历该结点下的子树

print '++++',n.tag

print '- - - - - - - - - - - - - - - - '

输出结果如下:

tag: catalog

tail: None

attrib: {}

attrib-id-default: NULL

attrib-id: None

attrib.items: []

attrib.keys: []

find-caption: None

find-item: 

findall: []

findtext-caption: None

getchildren: [, , , ]

iter: 

++++ catalog

++++ maxid

++++ login

++++ caption

++++ item

++++ caption

++++ item

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值