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 Web框架Flask下网站开发入门实例
Feb 08 Python
使用python加密自己的密码
Aug 04 Python
django基础之数据库操作方法(详解)
May 24 Python
对Python中DataFrame按照行遍历的方法
Apr 08 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
Python单元测试实例详解
May 25 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Python如何调用JS文件中的函数
Aug 16 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
用python批量移动文件
Jan 14 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.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
javascript天然的迭代器
2010/10/29 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
javascript实现简单打字游戏
2019/10/29 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
物业管理应届生求职信
2013/10/28 职场文书
毕业生简单求职信
2013/11/19 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
创业计划书之美甲店
2019/09/20 职场文书