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定时器使用示例分享
Feb 16 Python
python在控制台输出进度条的方法
Jun 20 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
python3转换code128条形码的方法
Apr 17 Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
django序列化serializers过程解析
Dec 14 Python
python爬虫容易学吗
Jun 02 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Python 实现RSA加解密文本文件
Dec 30 Python
python中time tzset()函数实例用法
Feb 18 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
一篇不错的PHP基础学习笔记
2007/03/18 PHP
php调用C代码的实现方法
2014/03/11 PHP
php截取字符串函数分享
2015/02/02 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
2007/03/08 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
python使用matplotlib绘制折线图教程
2017/02/08 Python
python opencv之SURF算法示例
2018/02/24 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
Python 串口读写的实现方法
2019/06/12 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
电子信息科学专业自荐信
2014/01/30 职场文书
司法建议书范文
2014/05/13 职场文书
给上级领导的感谢信
2015/01/22 职场文书
学校食品安全责任书
2015/01/29 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
python实现学员管理系统(面向对象版)
2022/06/05 Python
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers