Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法


Posted in Python onSeptember 23, 2019

总结了一下使用Python对xml文件的解析,用到的模块儿如下:

分别从xml字符串和xml文件转换为xml对象,然后解析xml内容,查询指定信息字段。

from xml.dom.minidom import parse, parseString
from xml.etree import ElementTree
import xml.dom.minidom
"""
Get XML String info 查询属性值
  response:xml string
  tag:xml tag
  element:xml attribute
"""
def get_xml_info(response, element):
  DOMTree = xml.dom.minidom.parseString(response)
  return DOMTree.documentElement.getAttribute(element)
"""
Get XML String info 查询制定名称的特定标签id
  xmlstring:xml str
  return config id
"""
def get_config_id_from_xml(xmlstring, scan):
  root = ElementTree.fromstring(xmlstring)
  configs = root.findall('config')
  for config in configs:
    config_name = config.find('name').text
    if config_name == scan:
      return config.attrib['id']
"""
Get XML String info 查询指定id
  xmlstring:xml str
  return report id
"""
def get_report_id_from_xml(xmlstring):
  root = ElementTree.fromstring(xmlstring)
  report_id = root.find('report_id').text
  return report_id
"""
Get XML String info
  xmlstring:xml str
  return progress 
"""
def get_progress_from_xml(xmlstring):
  root = ElementTree.fromstring(xmlstring)
  task = root.find('task')
  progress = float(task.find('progress').text)
  if progress < 0:
    return 100.0
  else:
    return progress
"""
Get XML Report info 从xml文件查询
  file_path : report path
"""
def get_xml_report(file_path):
  report = {}
  result_dicts = {}
  resultsList = []
  try:
    root = ElementTree.parse(file_path)
  except:
    return {}
  if root is not None:
    creation_time = root.find("creation_time")
    if creation_time is not None:
      report[creation_time.tag] = creation_time.text
    if root.find("report") is not None:
      scan_start = root.find("report").find("scan_start")
      if scan_start is not None:
        if scan_start.text:
          report[scan_start.tag] = scan_start.text
    results = root.getiterator("result")
    if results is not None:
      for result in results:
        if result.find("threat") is not None:
          if result.find("threat").text != "Log":
            resultsList.append(getResults(result))
  report["Results"] = resultsList
  return report

总结

以上所述是小编给大家介绍的Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python网络编程学习笔记(一)
Jun 09 Python
在Windows8上的搭建Python和Django环境
Jul 03 Python
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
在Docker上部署Python的Flask框架的教程
Apr 08 Python
python requests.post带head和body的实例
Jan 02 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
Django自定义用户登录认证示例代码
Jun 30 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
如何用Python编写一个电子考勤系统
Feb 08 Python
详解Python3定时器任务代码
Sep 23 #Python
python应用文件读取与登录注册功能
Sep 23 #Python
Python爬虫 urllib2的使用方法详解
Sep 23 #Python
Python 正则表达式爬虫使用案例解析
Sep 23 #Python
python处理document文档保留原样式
Sep 23 #Python
python 进程间数据共享multiProcess.Manger实现解析
Sep 23 #Python
python程序 线程队列queue使用方法解析
Sep 23 #Python
You might like
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
改进Django中的表单的简单方法
2015/07/17 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
pandas对指定列进行填充的方法
2018/04/11 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
法国春天百货官网:Printemps.com
2020/06/29 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
中学教师师德承诺书
2014/05/23 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书