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制作检测Linux运行信息的工具的教程
Apr 01 Python
python实现的简单FTP上传下载文件实例
Jun 30 Python
python redis 删除key脚本的实例
Feb 19 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
Oct 14 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
python爬取抖音视频的实例分析
Jan 19 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 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
PHP静态类
2006/11/25 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
各种快递查询--Api接口
2016/04/26 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
python获取mp3文件信息的方法
2015/06/15 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
如何在django中运行scrapy框架
2020/04/22 Python
Python extract及contains方法代码实例
2020/09/11 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
六五普法规划实施方案
2014/03/21 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
python中tkinter复选框使用操作
2021/11/11 Python