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求pi的方法
Oct 08 Python
python使用append合并两个数组的方法
Apr 28 Python
Python常用小技巧总结
Jun 01 Python
Python制作数据导入导出工具
Jul 31 Python
Python3 socket同步通信简单示例
Jun 07 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
用Python画小女孩放风筝的示例
Nov 23 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
Python 多进程原理及实现
Dec 21 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
JAVA/JSP学习系列之二
2006/10/09 PHP
php实现socket推送技术的示例
2017/12/20 PHP
web css实现整站样式互相切换
2013/10/29 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
BootStrap 可编辑表Table格
2016/11/24 Javascript
JS判断数组那点事
2017/10/10 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
高级电工工作职责
2013/11/21 职场文书
安全生产先进个人材料
2014/02/06 职场文书
采购内勤岗位职责
2015/04/13 职场文书
项目投资意向书范本
2015/05/09 职场文书
安全生产学习心得体会
2016/01/18 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
ES6 解构赋值的原理及运用
2021/05/25 Javascript
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
Docker部署Mysql8的实现步骤
2022/07/07 Servers