xml文件拆分 python_在Python中拆分大型XML文件

为了完成类似的任务,我成功地使用了celementree.iterparse方法。

我有一个带有“resFrame”标记的重复“entries”的大型xml文档,我想筛选出特定id的条目。下面是我用于此文档的代码:

源文档具有此结构

....

....

....

...

234234.....

344234.....

...

...

我使用下面的脚本创建了一个较小的文档,该文档具有相同的结构、bucket条目,并且只重新构建具有特定id的条目#!/usr/bin/env python2.6

import xml.etree.cElementTree as cElementTree

start = '''<?xml version="1.0" encoding="UTF-8"?>

'''

def main():

print start

context = cElementTree.iterparse('snap.xml', events=("start", "end"))

context = iter(context)

event, root = context.next() # get the root element of the XML doc

for event, elem in context:

if event == "end":

if elem.tag == 'bucket': # i want to write out all entries

elem.tail = None

print cElementTree.tostring( elem )

if elem.tag == 'resFrame':

if elem.find("id").text == ":4:39644:482:-1:1": # i only want to write out resFrame entries with this id

elem.tail = None

print cElementTree.tostring( elem )

if elem.tag in ['bucket', 'frame', 'resFrame']:

root.clear() # when done parsing a section clear the tree to safe memory

print ""

main()

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值