python处理xml文件_python中解析简单的xml文档

**

xml是一种十分常见的表机性语言,可提供统一的方法来描述应用程序的结构化数据。

**

<?xml version="1.0"?>

2

2016

1500

那么在python当中如何解析xml文档呢?

我们可以使用标准库中的xml.etree.ElementTree,其中的parse函数可以解析xml文档。

from xml.etree.ElementEtree import parse #导入这个函数

parse这个函数有两个参数parse(source,parse=None)

可以把上面这个xml文件作为source也就是输入元。

f = open('demo.xml')

et = parse(f) #得到一个元素树,至此我们就可以对这个元素树进行下一步的操作了。

root =et.getroot #获取元素树的根节点

root

=> #得到一个元素对象

root.tag

=>'data'

root.attrib

=>{} #得到一个字典

root.text

=>'\n\t'

root.text.strip()

=>''

root.getchildren #获取root节点的子元素。

=> # 但是这是一个即将被删除的属性,尽量避免使用它。

for child in root:

print child.get('name') #通过遍历来找它的子元素的name属性值

=> zz

root.find('country') # 通过寻找标签的名字来获取子元素,此方法总返回找到的第一个标签

=>

root.findall('country')

[

] #此方法返回的是一个列表,如想获取一个可迭代对象

root.iterfind('country')

=> #得到一个生成器对象,然后迭代它

for e in root.iterfind('country'):print e.get('name')

=> zz

此处注意。上面的方法都只是适用于root这个根节点的直接子元素,也就是country。然而对country的子元素,..无效。

那么非要找到怎么办

root.iter() #得到一个生成器对象,包括旗下的所有元素

list(root.iter())

=> [

] #有多少元素返回多少,元素名字可以重复。

list(root.iter('neighbor'))

=>[

]

关于查找还有一些高级的方法,也就是模糊匹配。语法类似XPATH

root.findall('country/*') # *找到旗下的所有元素

=>[

]

root.findall('rank')

=> []

root.findall('.//rank') # //找到任意层次的元素

=> [ ]

root.findall('.//rank..') # .. 找父节点的元素 .找当前元素下的

=>[

]

root.findall('country[@name="zz"]') # 找到包含属性name并且值为zz

=> []

关于高级查找更多的用法,可以去看看官方的API。

over!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值