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之str操作方法(详解)
Jun 19 Python
python使用fork实现守护进程的方法
Nov 16 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
解决nohup执行python程序log文件写入不及时的问题
Jan 14 Python
python 实现线程之间的通信示例
Feb 14 Python
python实现udp聊天窗口
Mar 31 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
python中pdb模块实例用法
Jan 15 Python
用Python selenium实现淘宝抢单机器人
Jun 18 Python
Python面向对象编程之类的概念
Nov 01 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
php 从数据库提取二进制图片的处理代码
2009/09/09 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js数组的操作指南
2014/12/28 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
python使用多线程不断刷新网页的方法
2015/03/31 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
Python ATM功能实现代码实例
2020/03/19 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
如何查找网页漏洞
2016/06/22 面试题
教育学专业毕业生的自我评价
2013/11/21 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
学期评语大全
2014/04/30 职场文书
专项资金申请报告
2015/05/15 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书