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对两个有序列表进行合并和排序的例子
Jun 13 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 Python
python列表生成器迭代器实例解析
Dec 19 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
python3将变量输入的简单实例
Aug 19 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 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正则提取图片地址
2014/03/27 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
javascript下function声明一些小结
2007/12/28 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
不同js异步函数同步的实现方法
2016/05/28 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
React复制到剪贴板的示例代码
2017/08/22 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python中zfill()方法的使用教程
2015/05/20 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
军训自我鉴定
2014/01/22 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
党员作风建设自查报告
2014/10/23 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
办公室禁烟通知
2015/04/23 职场文书
单位考核鉴定意见
2015/06/05 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
实战Python爬虫爬取酷我音乐
2022/04/11 Python
深入理解pytorch库的dockerfile
2022/06/10 Python