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算法学习之基数排序实例
Dec 18 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
pandas的排序和排名的具体使用
Jul 31 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python Collatz序列实现过程解析
Oct 12 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
基于django micro搭建网站实现加水印功能
May 22 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
python中类与对象之间的关系详解
Dec 16 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下实现折线图效果的代码
2007/04/28 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
PHP入门学习笔记之一
2010/10/12 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
Python群发邮件实例代码
2014/01/03 Python
Python实现telnet服务器的方法
2015/07/10 Python
python可视化实现KNN算法
2019/10/16 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
一套C++笔试题面试题
2012/06/06 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
团队精神演讲稿
2013/12/31 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
大学生自荐书范文
2015/03/05 职场文书
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL