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 21 Python
Python中的各种装饰器详解
Apr 11 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
Python get获取页面cookie代码实例
Sep 12 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
Python使用Pandas库常见操作详解
Jan 16 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
深入理解Python 多线程
Jun 16 Python
如何通过命令行进入python
Jul 06 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
Python时间操作之pytz模块使用详解
Jun 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
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
Gird事件机制初级读本
2007/03/10 Javascript
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
服务器安全设置的几个注册表设置
2007/07/28 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
python代码能做成软件吗
2020/07/24 Python
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
.NET常见笔试题集
2012/12/01 面试题
中学运动会广播稿
2014/01/19 职场文书
小学班主任寄语大全
2014/04/04 职场文书
企业文明单位申报材料
2014/05/16 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
精神文明建设先进个人事迹材料
2014/12/24 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
Nginx的基本概念和原理
2022/03/21 Servers