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实现的文件夹清理程序分享
Nov 22 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
Python程序运行原理图文解析
Feb 10 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
详解如何设置Python环境变量?
May 13 Python
python中的colorlog库使用详解
Jul 05 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
如何用python反转图片,视频
Apr 24 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP学习笔记之一
2011/01/17 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
大专生简历的自我评价
2013/11/26 职场文书
买房委托公证书
2014/04/08 职场文书
广告学专业求职信
2014/06/19 职场文书
不同意离婚答辩状
2015/05/22 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
python blinker 信号库
2022/05/04 Python