位置: 编程技术 - 正文

横向对比分析Python解析XML的四种方式(横向对比分析两个人关系的意义)

编辑:rootadmin

推荐整理分享横向对比分析Python解析XML的四种方式(横向对比分析两个人关系的意义),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:横向对比分析法,横向对比分析优势,横向对比分析表格,横向对比分析法和纵向对比分析法的区别,横向对比分析怎么写,横向对比分析法和纵向对比分析法的区别,横向对比分析法和纵向对比分析法的区别,横向对比分析法,内容如对您有帮助,希望把文章链接给更多的朋友!

在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受。

在网络搜索后发现,目前应用比较广泛,且效率相对较高的ElementTree也是一个比较多人推荐的算法,于是拿这个算法来实测对比,ElementTree也包括两种实现,一个是普通ElementTree(ET),一个是ElementTree.iterparse(ET_iter)。

本文将对DOM、SAX、ET、ET_iter四种方式进行横向对比,通过处理相同文件比较各个算法的用时来评估其效率。

程序中将四种解析方法均写为函数,在主程序中分别调用,来评估其解析效率。

解压后的XML文件内容示例为:

主程序函数调用部分代码为:

在最初的函数调用中函数返回两个值,但接收函数调用值时用两个变量分别调用,导致每个函数都要执行两次,之后修改为一次调用两个变量接收返回值,减少了无效调用。

1、DOM解析

函数定义代码:

程序运行结果:

**************************************************程序处理启动。输入目录为:/tmcdata/mro2csv/input/。输出目录为:/tmcdata/mro2csv/output/。输入目录下.gz文件个数为:,本次处理其中的个。**************************************************文件计数:1/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:2/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:3/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:………………………………………文件计数:/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:VS行计数:,运行时间:.,每秒处理行数:。已写入:/tmcdata/mro2csv/output/mro_.csv。

横向对比分析Python解析XML的四种方式(横向对比分析两个人关系的意义)

**************************************************程序处理结束。由于DOM解析需要将整个文件读入内存,并建立树结构,其内存消耗和时间消耗都比较高,但其优点在于逻辑简单,不需要定义回调函数,便于实现。

2、SAX解析

函数定义代码:

程序运行结果:

**************************************************程序处理启动。输入目录为:/tmcdata/mro2csv/input/。输出目录为:/tmcdata/mro2csv/output/。输入目录下.gz文件个数为:,本次处理其中的个。**************************************************文件计数:1/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:2/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:3/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:.........................................文件计数:/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:VS行计数:,运行时间:.,每秒处理行数:。已写入:/tmcdata/mro2csv/output/mro_.csv。

**************************************************程序处理结束。SAX解析相比DOM解析,运行时间大幅缩短,由于SAX采用逐行解析,对于处理较大文件其占用内存也少,因此SAX解析是目前应用较多的一种解析方法。其缺点在于需要自己实现回调函数,逻辑较为复杂。

3、ET解析

函数定义代码:

程序运行结果:

**************************************************程序处理启动。输入目录为:/tmcdata/mro2csv/input/。输出目录为:/tmcdata/mro2csv/output/。输入目录下.gz文件个数为:,本次处理其中的个。**************************************************文件计数:1/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:2/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:3/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:...........................................文件计数:/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:VS行计数:,运行时间:4.,每秒处理行数:。已写入:/tmcdata/mro2csv/output/mro_.csv。

**************************************************程序处理结束。相较于SAX解析,ET解析时间更短,并且函数实现也比较简单,所以ET具有类似DOM的简单逻辑实现且匹敌SAX的解析效率,因此ET是目前XML解析的首选。

4、ET_iter解析

函数定义代码:

程序运行结果:

**************************************************程序处理启动。输入目录为:/tmcdata/mro2csv/input/。输出目录为:/tmcdata/mro2csv/output/。输入目录下.gz文件个数为:,本次处理其中的个。**************************************************文件计数:1/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:2/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:文件计数:3/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:...................................................文件计数:/.已读入:/tmcdata/mro2csv/input/TD-LTE_MRO_NSN_OMC__.xml.gz.解析中:VS行计数:,运行时间:3.,每秒处理行数:。已写入:/tmcdata/mro2csv/output/mro_.csv。

**************************************************程序处理结束。在引入了ET_iter解析后,解析效率比ET提升了近%,而相较于DOM解析更是提升了倍,在解析效率提升的同时,由于其采用了iterparse这个循序解析的工具,其内存占用也是比较小的。

所以,小伙伴们,请好好利用这几种工具吧。

标签: 横向对比分析两个人关系的意义

本文链接地址:https://www.jiuchutong.com/biancheng/384414.html 转载请保留说明!

上一篇:python简单实现刷新智联简历

下一篇:Python内置的HTTP协议服务器SimpleHTTPServer使用指南

  • 总公司是小规模分公司是一般纳税人
  • 小规模免增值税是普票还是专票
  • 收到出口退税款如何入账
  • 职工旅游不计入福利费
  • 国际运输需要办什么证
  • 劳务报酬现金 过账
  • 机票行程单丢了可以重新打吗
  • 发票上是17%的税率吗
  • 本年支付 历年支付
  • 国际货运代理0税率和免税
  • 应付职工薪酬包括哪些内容
  • 联合开发合作模式
  • 每个月0申报,对企业有什么影响吗?
  • 车辆过户需要交费吗
  • 房屋估价入账需要计算什么税款?
  • 加工承揽合同印花税谁交
  • 红字信息表编码怎么查
  • 雇主责任险能否证明劳动关系
  • 跨年度收入计算的增值税如何入账?
  • 纳税人是非开业户是什么意思
  • 旅行社税收
  • 投资款需要缴纳增值税吗
  • 超市预付卡发票怎么开
  • 土地增值税通过什么科目核算
  • 资产负债表期初和期末指的是什么
  • Linux系统中矢量图ai格式怎么打开?
  • 一般计税方法增值税
  • 个人减免税政策6条
  • 银行承兑汇票背书人和被背书人什么关系
  • 在资本相对充足的情况下,为什么还要进一步引进外资
  • php获取post请求参数
  • 前端es6是什么意思
  • 域名续费多久生效
  • 税务代开,开错了重开要多久?
  • 结算业务书汇票怎么写
  • 发票没拿回来可以报销吗
  • 企业的管理费用占比
  • 一般纳税人购销合同印花税减免政策
  • 完全删除sql server2012
  • 待处理财产损溢借方是增还是减
  • 实收资本在核算上有哪些要求
  • 冲销暂估入库摘要怎么写
  • 保证金159001收益如何计算
  • 产品包装设计费属什么费用
  • 工会经费购买的固定资产处置
  • 会计准则允许预提吗
  • 到银行货款现金怎么货
  • 企业安装电子监控收费吗
  • 代收通行费不征税吗
  • 小企业会计准则会计科目表
  • 长期待摊费用包括增值税吗
  • 备查账依据什么登记
  • 删除一组数据中的指定数据
  • mysql复制命令
  • supervisor.sock refused connection
  • Win10系统中怎么将文件夹进行压缩
  • 破解浏览器内网教程
  • 不同的linux系统命令一样吗
  • window10电池
  • centos8 固态硬盘
  • 操作系统 保护
  • win8的安全中心
  • auto tool怎么用
  • 什么叫linux
  • window10的连接功能
  • pavmail.exe - pavmail进程是什么文件 有什么用
  • win10系统怎么设置默认打印机
  • div与span区别及用法
  • js 函数执行顺序
  • node.js使用的v8引擎是由哪个公司开发的
  • Node.js中的全局变量有哪些
  • Unity3D之Vector3.Dot和Vector3.Cross的使用
  • jQuery实现表格与ckeckbox的全选与单选功能
  • 基于node.js的跳蚤市场网站主要内容
  • nodejs fabric
  • angular.js
  • android基础入门教程
  • Unity destructor Or OnDestory
  • 个人可以到税务开物业费的
  • 海南省地税官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设