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 相关文章推荐
17个Python小技巧分享
Jan 23 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
Python selenium文件上传方法汇总
Nov 19 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
python3 property装饰器实现原理与用法示例
May 15 Python
python的scipy实现插值的示例代码
Nov 12 Python
pytorch 实现查看网络中的参数
Jan 06 Python
python分别打包出32位和64位应用程序
Feb 18 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 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
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
vue+iview/elementUi实现城市多选
2019/03/28 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
关于python字符串方法分类详解
2019/08/20 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
环境科学专业研究生求职信
2013/10/02 职场文书
男性健康日的活动方案
2014/08/18 职场文书
企业领导对照检查材料
2014/08/20 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
军训新闻稿范文
2015/07/17 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python