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简单实现刷新智联简历
Mar 30 Python
python线程、进程和协程详解
Jul 19 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
Django Rest framework认证组件详细用法
Jul 25 Python
python实现简易学生信息管理系统
Apr 05 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
pytorch中的weight-initilzation用法
Jun 24 Python
使用python实现学生信息管理系统
Feb 25 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 安全过滤函数代码
2011/05/07 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
python字符串string的内置方法实例详解
2018/05/14 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
python实现简单猜单词游戏
2020/12/24 Python
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
给面试官的感谢信
2014/02/01 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
开学典礼校长致辞
2015/07/29 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
七年级作文之环保作文
2019/10/17 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL