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登录Dr.com思路以及代码分享
Jun 25 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
python 日志增量抓取实现方法
Apr 28 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
python3 拼接字符串的7种方法
Sep 12 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
django admin 自定义替换change页面模板的方法
Aug 23 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Python中的套接字编程是什么?
Jun 21 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
欧美媒体选出10年前最流行的17部动画
2017/01/18 日漫
php面试中关于面向对象的相关问题
2019/02/13 PHP
关于跨站脚本攻击问题
2011/12/22 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
vue组件name的作用小结
2018/05/23 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
django admin 后台实现三级联动的示例代码
2018/06/22 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
怎样从/向数据文件读/写结构
2014/11/23 面试题
远程调用的原理
2014/07/05 面试题
服务行业个人求职的自我评价
2013/12/12 职场文书
大型会议策划方案
2014/05/17 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
布达拉宫的导游词
2015/02/02 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
电话营销开场白
2015/05/29 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript