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 NumPy库安装使用笔记
May 18 Python
简单解析Django框架中的表单验证
Jul 17 Python
使用Python的PIL模块来进行图片对比
Feb 18 Python
剖析Python的Twisted框架的核心特性
May 25 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
Python 3 判断2个字典相同
Aug 06 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
python如何写个俄罗斯方块
Nov 06 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
Python基于mediainfo批量重命名图片文件
Dec 29 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 和 MySQL 基础教程(三)
2006/10/09 PHP
Dedecms常用函数解析
2008/02/01 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
JS中递归函数
2016/06/17 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
Vue程序调试的方法
2019/06/17 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Python 音频生成器的实现示例
2019/12/24 Python
如何基于python实现脚本加密
2019/12/28 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
python字典按照value排序方法
2020/12/28 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
关于爱情的广播稿
2014/01/16 职场文书
工商管理专业毕业生求职信
2014/05/26 职场文书
遗失证明范文
2015/06/19 职场文书
干部考核工作总结2015
2015/07/24 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python
pytorch实现手写数字图片识别
2021/05/20 Python
JS中如何优雅的使用async await详解
2021/10/05 Javascript
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS